Powershell 当单个文件上载失败时,使用WinSCP.NET程序集的批处理文件上载将停止

Powershell 当单个文件上载失败时,使用WinSCP.NET程序集的批处理文件上载将停止,powershell,file-upload,ftp,winscp,winscp-net,Powershell,File Upload,Ftp,Winscp,Winscp Net,我正在使用WinSCP连接到FTP并上载一堆文件,但当文件无法上载时,我遇到了问题,当脚本停止时,以下文件无法上载。我主要使用的代码来自 意外行为如下所示: 我在文件夹中有4个文件被上传,文件1、2、3和4,如果我从文件3中删除所有权限并运行脚本,文件1和2被上传到FTP并被移动到另一个目录,那么脚本将以文件3没有权限的错误结束,文件4不会被上传 我不确定我是否忽略了任何东西,脚本是否应该继续,即使它不能对file3做任何事情?我不确定是否有其他方法使单个文件的上载失败 如果需要自定义错误处理,

我正在使用
WinSCP
连接到FTP并上载一堆文件,但当文件无法上载时,我遇到了问题,当脚本停止时,以下文件无法上载。我主要使用的代码来自

意外行为如下所示:

我在文件夹中有4个文件被上传,文件1、2、3和4,如果我从文件3中删除所有权限并运行脚本,文件1和2被上传到FTP并被移动到另一个目录,那么脚本将以文件3没有权限的错误结束,文件4不会被上传


我不确定我是否忽略了任何东西,脚本是否应该继续,即使它不能对file3做任何事情?我不确定是否有其他方法使单个文件的上载失败

如果需要自定义错误处理,则必须自己循环文件

$localPath = "C:\local\path"
$remotePath = "/remote/path/"

$localFiles = Get-ChildItem -Path $localPath

foreach ($localFile in $localFiles)
{
    Write-Host "Uploading $($localFile.FullName)..."
    $sourcePath = [WinSCP.RemotePath]::EscapeFileMask($localFile.FullName)
    $transferResult = $session.PutFiles($sourcePath, $remotePath)

    if (!$transferResult.IsSuccess)
    {
        # Print error (but continue with other files)
        Write-Host ("Error upload file $($localFile.FullName): " +
            "$($transferResult.Failures[0].Message)")
    }    
}

与官方示例所做的类似。

如果需要自定义错误处理,则必须自己循环文件

$localPath = "C:\local\path"
$remotePath = "/remote/path/"

$localFiles = Get-ChildItem -Path $localPath

foreach ($localFile in $localFiles)
{
    Write-Host "Uploading $($localFile.FullName)..."
    $sourcePath = [WinSCP.RemotePath]::EscapeFileMask($localFile.FullName)
    $transferResult = $session.PutFiles($sourcePath, $remotePath)

    if (!$transferResult.IsSuccess)
    {
        # Print error (but continue with other files)
        Write-Host ("Error upload file $($localFile.FullName): " +
            "$($transferResult.Failures[0].Message)")
    }    
}
类似于官方的例子