使用PowerShell通过FTP上载文件

使用PowerShell通过FTP上载文件,powershell,ftp,webclient,Powershell,Ftp,Webclient,我正在编写一个Powershell脚本来监视一个目录,当一个文件(或多个文件)上载到该目录时,它会获取这些文件,将它们复制到另一个文件夹,发送到FTP服务器,然后从原始目录中删除该文件 我在连接FTP服务器时遇到问题。我不确定问题是否在于我配置Web客户端的方式,或者问题是否在于ftp URI中有空格,而我没有正确地转义它们 代码如下: $source=“c:/testFtp” $ftpdestination=”ftp://username:password@ftp.ftpsite.com/f

我正在编写一个Powershell脚本来监视一个目录,当一个文件(或多个文件)上载到该目录时,它会获取这些文件,将它们复制到另一个文件夹,发送到FTP服务器,然后从原始目录中删除该文件

我在连接FTP服务器时遇到问题。我不确定问题是否在于我配置Web客户端的方式,或者问题是否在于ftp URI中有空格,而我没有正确地转义它们

代码如下:

$source=“c:/testFtp”
$ftpdestination=”ftp://username:password@ftp.ftpsite.com/folder with space/folder with space“
$webclient=新对象-TypeName System.Net.webclient
$files=获取子项$source
foreach($files中的文件)
{
写入主机“上载$file”
试一试{
$ftp=“$FTPDestation/$file”
$uri=New Object-TypeName System.uri-ArgumentList$ftp
$webclient.UploadFile($uri,$source/$file)
}抓住{
添加内容“$logs”-值“上载到ftp时出错”
}
}

$webclient.Dispose()
答案:

事实证明WebClient连接正确,但SSL阻止了文件的发送。我是通过使用C#编译和运行脚本发现这一点的,它为我提供了更好的错误处理,因为我对Powershell脚本不熟悉,似乎无法获得良好的错误处理

经过研究,我找不到一种方法来启用WebClient的SSL,所以我切换到FtpWebRequest。下面是成功的代码(这个try-catch块似乎没有像我希望的那样记录错误,但是该工具现在将成功地将文件发送到ftp服务器:

试试看{
$ftp=[System.Net.FtpWebRequest]::创建(“$ftpsite/$filename”)
$ftp=[System.Net.FtpWebRequest]$ftp
$ftp.Method=[System.Net.WebRequestMethods+ftp]::上传文件
$ftp.Credentials=新对象系统.Net.NetworkCredential($username,“$password”)
$ftp.UseBinary=$true
$ftp.useAmposive=$true

$ftp.EnableSSL=$true#那么你到底得到了什么错误?你在任何地方定义了
$logs
吗?这只是一个片段,日志被定义了,如果路径完全错误,我仍然会偶尔出错@TheoI不出错,这是问题的一部分。我运行了它,但文件没有显示在ftp站点上。我想知道它是否是我的错这是FTP服务器端@marsze的一个问题