Я использую следующий скрипт для копирования файлов из моей локальной папки в SFTP. Как только я загружаю файл, я хочу переместить файл в подпапку. Я хочу загружать только файлы в папку C:\Users\Administrator\Desktop\ftp
, а не файлы в другие подпапки.
param (
$backupPath = "C:\Users\Administrator\Desktop\ftp\moved"
)
# Load the Assembly and setup the session properties
try
{
# Load WinSCP .NET assembly
Add-Type -Path "C:\Program Files (x86)\WinSCP\WinSCPnet.dll"
$session = New-Object WinSCP.Session
$filelist = Get-ChildItem C:\Users\Administrator\Desktop\ftp
# Connect And send files, then close session
try
{
# Connect
$session.Open($sessionOptions)
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.TransferMode = [WinSCP.TransferMode]::Binary
foreach ($file in $filelist)
{
$transferResult = $session.PutFiles("C:\Users\Administrator\Desktop\ftp\$file", "/", $False, $transferOptions)
foreach ($transfer in $transferResult.Transfers)
{
Write-Host "Upload of $($transfer.FileName) succeeded"
Move-Item $transfer.FileName $backupPath
}
}
}
finally
{
# Disconnect, clean up
$session.Dispose()
}
exit 0
}
# Catch any errors
catch
{
Write-Host "Error: $($_.Exception.Message)"
exit 1
}
В этот момент, если я запущу скрипт, все файлы в папке moved также будут загружены через папку SFTP, и мне просто нужно загрузить файлы в корневой каталог папки ftp
.
Я думаю, мне нужно будет изменить эту строку здесь, но не знаю, как ее изменить.
$filelist = Get-ChildItem C:\Users\Administrator\Desktop\ftp