A tarefa é muito simples, mas não consigo implementá-la. Preciso excluir a pasta do sistema dos dados que são sincronizados com o servidor de backup remoto.
Meu Roteiro
param (
$localPath = "E:\",
$remotePath = "/disk_files_backup/disk_E",
$logFile = "C:\Task_Sheduler\.log\sync_disk_E.log"
)
"$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss') - Starting synchronization of $localPath to $remotePath" | Out-File $logFile
try {
Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
Protocol = [WinSCP.Protocol]::Sftp
HostName = "*"
UserName = "*"
Password = "*"
GiveUpSecurityAndAcceptAnySshHostKey = $True
}
$session = New-Object WinSCP.Session
try {
# Connect
$session.Open($sessionOptions)
# Upload files
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
$transferOptions.FileMask = "| System Volume Information*" # Example file types to include
# Synchronize files to remote directory, collect results
$synchronizationResult = $session.SynchronizeDirectories(
[WinSCP.SynchronizationMode]::Remote,
$localPath,
$remotePath,
$True,
$transferOptions
)
$synchronizationResult #| Out-File $logFile -Append
}
finally {
# Disconnect, clean up
$session.Dispose()
}
exit 0
}
catch {
Write-Host "Error: $($_.Exception.Message)"
exit 1
}
tentei diferentes formatos para especificar a pasta, também excluí todas as pastas usando este método "| *" nada funciona para mim
Você tem dois problemas no seu código.
A máscara para um diretório deve terminar com uma barra:
https://winscp.net/eng/docs/file_mask#directory
Então é assim:
Ou
*/
, ao excluir todos os diretórios.Veja Como transferir (ou sincronizar) diretórios de forma não recursiva?
TransferOptions options
é o 7º argumento deSession.SynchronizeDirectories
, não o 5º:https://winscp.net/eng/docs/library_session_synchronizedirectories
Então a chamada deveria ser assim:
Veja também Por que as opções fornecidas aos métodos de montagem do WinSCP .NET no PowerShell estão sendo ignoradas?