# Monitor AD2-to-NAS sync status periodically param( [int]$Checks = 5, [int]$IntervalMinutes = 3 ) $Username = "INTRANET\sysadmin" $Password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force $Cred = New-Object System.Management.Automation.PSCredential($Username, $Password) Write-Host "========================================" -ForegroundColor Cyan Write-Host "AD2-to-NAS Sync Monitor" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan Write-Host "Checks: $Checks (every $IntervalMinutes minutes)" Write-Host "Monitoring CRLF preservation on synced files" Write-Host "" for ($i = 1; $i -le $Checks; $i++) { $Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" Write-Host "[$Timestamp] Check $i of $Checks" -ForegroundColor Yellow Write-Host "----------------------------------------" # Check AD2 sync log (last 10 lines) try { $LogTail = Invoke-Command -ComputerName 192.168.0.6 -Credential $Cred -ScriptBlock { Get-Content 'C:\Shares\test\scripts\sync-from-nas.log' -Tail 10 } Write-Host "[INFO] Recent sync log entries:" $LogTail | ForEach-Object { Write-Host " $_" } Write-Host "" } catch { Write-Host "[ERROR] Could not read AD2 sync log: $_" -ForegroundColor Red Write-Host "" } # Check NAS file timestamps and CRLF Write-Host "[INFO] Checking DEPLOY.BAT on NAS..." $NASInfo = & 'C:\Windows\System32\OpenSSH\ssh.exe' -o BatchMode=yes root@192.168.0.9 'ls -la /data/test/DEPLOY.BAT' 2>&1 if ($LASTEXITCODE -eq 0) { Write-Host " $NASInfo" # Copy and verify CRLF & 'C:\Windows\System32\OpenSSH\scp.exe' -O root@192.168.0.9:/data/test/DEPLOY.BAT ./DEPLOY_MONITOR.BAT 2>$null if (Test-Path "DEPLOY_MONITOR.BAT") { $Content = Get-Content "DEPLOY_MONITOR.BAT" -Raw $Size = (Get-Item "DEPLOY_MONITOR.BAT").Length if ($Content -match "`r`n") { Write-Host " [SUCCESS] CRLF preserved ($Size bytes)" -ForegroundColor Green } else { Write-Host " [WARNING] LF only ($Size bytes)" -ForegroundColor Yellow } Remove-Item "DEPLOY_MONITOR.BAT" -Force } } else { Write-Host " [ERROR] Could not access NAS" -ForegroundColor Red } Write-Host "" if ($i -lt $Checks) { Write-Host "Waiting $IntervalMinutes minutes until next check..." Write-Host "" Start-Sleep -Seconds ($IntervalMinutes * 60) } } Write-Host "========================================" -ForegroundColor Cyan Write-Host "Monitoring Complete" -ForegroundColor Cyan Write-Host "========================================" -ForegroundColor Cyan