我有一个将文件上传到FTP服务器的脚本,我有一个服务器列表IP $FTPServer
,文件目录已上传\Upload
。它使用PSFTP module。
以下是我的阅读文件$item
并上传到IP $line
的代码:
foreach ($line in $FTPServer)
{
foreach ($item in (Get-ChildItem .\Upload))
{
Start-Transcript -Path $results
Write-Host -Object "ftp url: $line"
Set-FTPConnection -Credentials $FTPCredential -Server $line -Session MySession -UsePassive
$Session = Get-FTPConnection -Session MySession
Write-Host -Object "Uploading $item..."
Add-FTPItem -Session $Session -Path $FTPPlace -LocalPath .\Upload\$item -Confirm:$false
Stop-Transcript
}
}
问题是,有时并非所有文件都可以上传或某个服务器已关闭。因此需要保存上传结果。我想像桌子一样会存储在logs.txt
中,看起来像这样:
FTP Server File Connected Uploaded ---------- --------- -------- -------- 192.168.1.2 test.txt OK OK #when connected and uploaded file 192.168.1.2 conf.dll OK FAIL #when connected but did not upload 192.168.1.20 test.txt FAIL FAIL #when did not connect and no uploaded
我在考虑哈希表:
$array = $line, $item, $array[2], $array[3]
$FailTable=New-Object -TypeName PSObject -Property ([ordered]@{"FTP Server"=$array[0]; "File"=$array[1];"Connected"=$array[2];"Uploaded"=$array[3]})
$FailTable|Out-File '.\stats.txt'
但我不知道如何将联系状态和上传到$array[2]
和$array[3]
我很乐意提供任何帮助。
答案 0 :(得分:0)
您可以将数组构建为服务器和文件名的组合,然后存储结果传递,失败,等。< / p>
所以,你的表有:
192.168.1.2 test.txt OK OK #when connected and uploaded file 192.168.1.2 conf.dll OK FAIL #when connected but did not upload 192.168.1.20 test.txt FAIL FAIL #when did not connect and no uploaded
看起来像:
"192.168.1.2\test.txt","OK" "192.168.1.2\conf.dll","OK" "192.168.1.20\test.txt","FAIL"
如果您使用了不允许的字符(比如IP和名称之间的*
,那么您可以执行split("*")
将它们分开。
根据您用于FTP的模块,您可能会说:
$results = Add-FTPItem -Session $Session -Path $FTPPlace -LocalPath .\Upload\$item -Confirm:$false
然后查看$results
的值以查看是否存在问题(可能?)
答案 1 :(得分:-1)
我昨天对自己的问题添加了答案:
我用ftp.ini文件制作了一个ftp脚本文件。
该文件位于c:\ hotbox \ ftpbat.bat
我的目录错误。该程序运行良好,但是我在不同的驱动器索引中运行了bat程序。我正在VB6索引
中对其进行测试对不起。