使用PowerShell / WinSCP脚本

时间:2018-01-19 15:38:49

标签: powershell sftp winscp winscp-net

我正在使用WinSCP中生成的PowerShell脚本来sftp某个文件夹中的文件。它每周五早上运行,但我需要它在上传后将文件移动到另一个文件夹。我尝试了MoveFilesPutFiles命令,但它们似乎无法正常工作。任何帮助表示赞赏。代码如下。

# Load WinSCP .NET assembly
Add-Type -Path "WinSCPnet.dll"

# Set up session options
$sessionOptions = New-Object WinSCP.SessionOptions -Property @{
    Protocol = [WinSCP.Protocol]::Sftp
    HostName = "xxxx"
    UserName = "xxxxx"
    Password = "xxxx"
    SshHostKeyFingerprint = "xxxxx"
}

$session = New-Object WinSCP.Session

try
{
    # Connect
    $session.Open($sessionOptions)

    # Transfer files
    $session.PutFiles("xxxxx", "xxxxxx*").Check()


}
finally
{
    $session.Dispose()
}

2 个答案:

答案 0 :(得分:0)

在WinSCP网站示例中有一个示例来说明您的确切问题:
Moving local files to different location after successful upload

这恰好是你问题标题的第一个谷歌热门!

代码的相关部分是:

# Iterate over every transfer
foreach ($transfer in $transferResult.Transfers)
{
    # Success or error?
    if ($transfer.Error -eq $Null)
    {
        Write-Host "Upload of $($transfer.FileName) succeeded, moving to backup"
        # Upload succeeded, move source file to backup
        Move-Item $transfer.FileName $backupPath
    }
    else
    {
        Write-Host "Upload of $($transfer.FileName) failed: $($transfer.Error.Message)"
    }
}

答案 1 :(得分:0)

是的,我确实在 Google 上看到过这个。我遇到的这个问题是当您在下面的部分中有多行时:

# Transfer files
$session.PutFiles("xxxxx", "xxxxxx*").Check()

传输后似乎没有一行一行的走,传输后移动每个文件。它只移动了列表中的第一个文件。