136 lines
5.2 KiB
PowerShell
136 lines
5.2 KiB
PowerShell
# Fix the sync functions more precisely
|
|
$password = ConvertTo-SecureString "Paper123!@#" -AsPlainText -Force
|
|
$cred = New-Object System.Management.Automation.PSCredential("INTRANET\sysadmin", $password)
|
|
|
|
Write-Host "=== Fixing Sync Script Functions ===" -ForegroundColor Cyan
|
|
Write-Host ""
|
|
|
|
Invoke-Command -ComputerName 192.168.0.6 -Credential $cred -ScriptBlock {
|
|
$scriptPath = "C:\Shares\test\scripts\Sync-FromNAS.ps1"
|
|
$content = Get-Content $scriptPath
|
|
|
|
Write-Host "[1] Finding Copy-FromNAS function" -ForegroundColor Yellow
|
|
Write-Host "=" * 80 -ForegroundColor Gray
|
|
|
|
# Find the function
|
|
for ($i = 0; $i -lt $content.Count; $i++) {
|
|
if ($content[$i] -match "^function Copy-FromNAS") {
|
|
Write-Host "Found at line $($i+1): $($content[$i])" -ForegroundColor Green
|
|
|
|
# Show the function (next 10 lines)
|
|
Write-Host "Current function:" -ForegroundColor Cyan
|
|
for ($j = $i; $j -lt ($i + 10) -and $j -lt $content.Count; $j++) {
|
|
Write-Host " $($j+1): $($content[$j])" -ForegroundColor Gray
|
|
}
|
|
break
|
|
}
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "[2] Finding Copy-ToNAS function" -ForegroundColor Yellow
|
|
Write-Host "=" * 80 -ForegroundColor Gray
|
|
|
|
for ($i = 0; $i -lt $content.Count; $i++) {
|
|
if ($content[$i] -match "^function Copy-ToNAS") {
|
|
Write-Host "Found at line $($i+1): $($content[$i])" -ForegroundColor Green
|
|
|
|
# Show the function (next 10 lines)
|
|
Write-Host "Current function:" -ForegroundColor Cyan
|
|
for ($j = $i; $j -lt ($i + 10) -and $j -lt $content.Count; $j++) {
|
|
Write-Host " $($j+1): $($content[$j])" -ForegroundColor Gray
|
|
}
|
|
break
|
|
}
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "[3] Creating updated script with OpenSSH" -ForegroundColor Yellow
|
|
Write-Host "=" * 80 -ForegroundColor Gray
|
|
|
|
# Create new script content with line-by-line replacement
|
|
$newContent = @()
|
|
$inCopyFromNAS = $false
|
|
$inCopyToNAS = $false
|
|
$funcDepth = 0
|
|
|
|
for ($i = 0; $i -lt $content.Count; $i++) {
|
|
$line = $content[$i]
|
|
|
|
# Track when we enter functions
|
|
if ($line -match "^function Copy-FromNAS") {
|
|
$inCopyFromNAS = $true
|
|
$funcDepth = 0
|
|
$newContent += "function Copy-FromNAS {"
|
|
$newContent += " param([string]`$RemotePath, [string]`$LocalPath)"
|
|
$newContent += ""
|
|
$newContent += " # OpenSSH scp with verbose logging"
|
|
$newContent += " `$result = & `$SCP -v -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=`"`$SCRIPTS_DIR\.ssh\known_hosts`" `"`${NAS_USER}@`${NAS_IP}:`$RemotePath`" `$LocalPath 2>&1"
|
|
$newContent += ""
|
|
$newContent += " if (`$LASTEXITCODE -ne 0) {"
|
|
$newContent += " Write-Log `" SCP PULL ERROR: `$(`$result | Out-String)`""
|
|
$newContent += " }"
|
|
$newContent += ""
|
|
$newContent += " return `$LASTEXITCODE -eq 0"
|
|
$newContent += "}"
|
|
# Skip until we find the closing brace
|
|
continue
|
|
}
|
|
|
|
if ($line -match "^function Copy-ToNAS") {
|
|
$inCopyToNAS = $true
|
|
$funcDepth = 0
|
|
$newContent += "function Copy-ToNAS {"
|
|
$newContent += " param([string]`$LocalPath, [string]`$RemotePath)"
|
|
$newContent += ""
|
|
$newContent += " # OpenSSH scp with verbose logging"
|
|
$newContent += " `$result = & `$SCP -v -o StrictHostKeyChecking=accept-new -o UserKnownHostsFile=`"`$SCRIPTS_DIR\.ssh\known_hosts`" `$LocalPath `"`${NAS_USER}@`${NAS_IP}:`$RemotePath`" 2>&1"
|
|
$newContent += ""
|
|
$newContent += " if (`$LASTEXITCODE -ne 0) {"
|
|
$newContent += " Write-Log `" SCP PUSH ERROR: `$(`$result | Out-String)`""
|
|
$newContent += " }"
|
|
$newContent += ""
|
|
$newContent += " return `$LASTEXITCODE -eq 0"
|
|
$newContent += "}"
|
|
# Skip until we find the closing brace
|
|
continue
|
|
}
|
|
|
|
# Track braces when inside function
|
|
if ($inCopyFromNAS -or $inCopyToNAS) {
|
|
if ($line -match "{") { $funcDepth++ }
|
|
if ($line -match "}") {
|
|
$funcDepth--
|
|
if ($funcDepth -le 0) {
|
|
# End of function, stop skipping
|
|
$inCopyFromNAS = $false
|
|
$inCopyToNAS = $false
|
|
}
|
|
}
|
|
# Skip lines inside the old function
|
|
continue
|
|
}
|
|
|
|
# Update tool paths
|
|
if ($line -match '\$PSCP\s*=') {
|
|
$newContent += '$SCP = "C:\Program Files\OpenSSH\scp.exe"'
|
|
continue
|
|
}
|
|
if ($line -match '\$PLINK\s*=') {
|
|
$newContent += '$SSH = "C:\Program Files\OpenSSH\ssh.exe"'
|
|
continue
|
|
}
|
|
|
|
# Keep all other lines
|
|
$newContent += $line
|
|
}
|
|
|
|
# Save the updated script
|
|
$newContent | Out-File -FilePath $scriptPath -Encoding UTF8 -Force
|
|
|
|
Write-Host "[OK] Script updated with OpenSSH functions" -ForegroundColor Green
|
|
Write-Host "[OK] Saved: $scriptPath" -ForegroundColor Green
|
|
}
|
|
|
|
Write-Host ""
|
|
Write-Host "=== Update Complete ===" -ForegroundColor Cyan
|