如何使用Putty在PowerShell中确认FTP上传

时间:2014-09-19 18:42:50

标签: powershell putty

我有一个PowerShell脚本可以将文件上传到FTP服务器。一切正常。

$program = "C:\Putty\psftp.exe"
$pass = "test"
$hst = "109.18.205.14"
$user = "admin"
$file = "d:\FTP\Test.txt"
$cmd = @(
"cd /Test",
"put $file",
"bye"
)
[String]($cmd | & $program -pw $pass "$user@$hst" 2>&1)

我的问题是我需要确认上传是否成功。我只需要一条输出消息,说明"成功"或"失败" ,任何想法?

2 个答案:

答案 0 :(得分:1)

您应该能够将其集成到您自己的代码中。我刚刚在您的列表中添加了dir命令。我不确定将它作为一个单独的会话来做是否明智。只留下你的其他变量,我只是将其添加到最后。

$cmd = @(
"cd /Test",
"put $file",
"dir",
"bye"
)
$return = @()
($cmd | & $program -pw $pass "$user@$hst") | ForEach-Object{$return+=$_}
If($return -match (Split-Path  $file -Leaf)){Write-Host "Success"} Else {Write-Host "Failed"}

在制作中,我不确定这是如何工作的。只需删除put中的$cmd行,就可以检查文件。 注意我虽然可以做$return = ($cmd | & $program -pw $pass "$user@$hst" -P 49000)之类的事情,但不知何故psftp命令kepy失败,这就是为什么我将输出传输到名为$return的数组

答案 1 :(得分:0)

如果可以测试路径以查看创建的文件是否存在。

如果存在,则返回true

类似的东西:

if(test-path $file){
  echo success;
}
Else{
  echo false;
}