在 Powershell 上的 .NET Assembly 的
$session.GetFiles
的 文档页面本身上执行
GetFiles
命令后,我遇到了一个奇怪的问题。
当我拿走源目录中的
ClientFolder
($session.GetFiles
的第一个参数)时,它会给出超时错误“超时等待WinSCP响应”。当我将 ClientFolder
放回原处时,它将运行并检索子目录中所需的文件。
为什么?子目录的遍历是否有递归限制?它在请求的 FileMask
文件和 ClientFolder
之间只有几层子目录。我没看出问题所在。
# Connect
$session.Open($sessionOptions)
#
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.FileMask = "*Finance.xlsx"
# Download files
$transferOptions.AddRawSettings("ExcludeEmptyDirectories", "1")
$session.GetFiles("/CompanyName/HealthFiles/ClientFolder/*", "C:\Users\UserName\Desktop\targetfolder\", $False, $transferOptions).Check()
这将成功运行并返回文件,但我想删除
ClientFolder
级别并运行它。如果我这样做,我将超时并立即下载任何文件...
这解决了错误。添加
$session.Timeout
:
# Connect
$session.Open($sessionOptions)
$session.Timeout = New-TimeSpan -Seconds 400
#
$transferOptions = New-Object WinSCP.TransferOptions
$transferOptions.FileMask = "*Finance.xlsx"
# Download files
$transferOptions.AddRawSettings("ExcludeEmptyDirectories", "1")
$session.GetFiles("/CompanyName/HealthFiles/*", "C:\Users\UserName\Desktop\targetfolder\", $False, $transferOptions).Check()