我需要在几个 ftps 上复制几个文件。
我使用这个Write-FTP 功能。它的各种版本在网络和 SO 上流传。
问题是复制失败取决于文件和其他语句的数量。这是测试代码:
. ".\Write-FTP.ps1"
$ftp = "ftp://10.35.3.66//var/www/html/"
$files=@()
@(1..151) | %{ $files += "File1.zip"}
ForEach( $file in $files) {
$file
Write-Ftp $file $ftp @("user", "pass")
#[System.GC]::Collect()
}
在我的系统上,150 个文件可以工作,但第 151 个文件会出错。如果我取消注释 GC.Collect,它会在 3 个文件后失败。File1.zip 是空的 zip 文件。这是输出:
---------- PowerShell ----------
File1.zip
File1.zip
File1.zip
Exception calling "GetRequestStream" with "0" argument(s): "The remote server r
eturned an error: (500) Syntax error, command unrecognized."
At D:\Work\ISPPlus\_novi\Write-FTP.ps1:17 char:30
+ $rs = $ftp.GetRequestStream <<<< ()
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException
错误的发生取决于文件的大小和数量。它看起来像一些内存问题或其他东西,但我找不到什么问题。