如何使用Putty在PowerShell中确认FTP上载
我有一个PowerShell脚本可以将文件上载到FTP服务器。一切正常如何使用Putty在PowerShell中确认FTP上载,powershell,putty,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>
$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)
我的问题是,我需要确认上传是否成功。我只需要一条输出消息,上面写着“成功”或“失败”,你知道吗?如果你能测试路径,看看创建的文件是否存在 如果它存在,它将返回true 大概是这样的:
if(test-path $file){
echo success;
}
Else{
echo false;
}
您应该能够将其集成到自己的代码中。我刚刚在您的列表中添加了一个
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"}
在生产中,我不确定这将如何工作。只需删除
$cmd
中的put
行,就可以检查文件。注意:我虽然可以做一些类似于$return=($cmd |和$program-pw$pass“$user@$hst”-p49000)
的事情,但不知怎的,psftp命令kepy失败了,这就是为什么我将输出管道传输到名为$return
的数组中,在“上载”之后您能做一个获取$file
吗?您也可以执行dir
命令并检查输出。我可以检查输出,并且文件已被复制。问题是我想稍后发送一封内容为“成功”或“失败”的电子邮件。但现在我需要系统给我一个过程的反馈。这个文件将存在于一个安全的远程主机上,OP将无法像那样进行测试。本地副本$文件已经存在,所以理论上这应该总是正确的。@Matt这是一个很好的观点。如果这是供个人使用的,OP可以获取此cmdlet。然后OP将能够使用get ftp在一行中完成相同的操作。Matt是对的,我测试了它,输出总是“成功”@Arun这是生产。@AliShariaty尝试一下,它还可以列出项目:我测试了它,不幸的是它无法工作:(首先它暂停,然后给我一条网络超时消息。你有什么powershell版本?如果你将此代码与你的put
代码分开运行会怎么样。取下我的代码,然后删除put$文件,
行。在你的部分之后复制我的部分。不替换而是添加?相同的结果,再次超时消息我很抱歉…我有一个端口。)从我的测试中删除那里的签名。如果你复制了那里的代码,请删除-P 49000
。我编辑了我的帖子。