このスクリプトを試してみましたが、うまくいきませんでした
$file = "test.txt"
$filePath = "C:\" + $file
$server = "ftp://server"
IF (Test-Connection -ComputerName $server -Quiet -Count 1 -ErrorAction SilentlyContinue)
{
$ftp = $server+$file
$webclient = New-Object System.Net.WebClient
$uri = New-Object System.Uri($ftp)
"Uploading $File..."
$webclient.UploadFile($uri, $filePath)
}
ELSE
{write-host "error"}
スクリプトを実行すると、ホストに「エラー」というメッセージが表示されます。これはサーバーとの接続がないことを意味しますが、pingを実行するとサーバーは応答します。
答え1
@floliloliloがすでにコメントしているように、Test-Connection
server
は URL ではなくホスト名を受け入れるため、ではなく のみを使用して呼び出す必要がありますftp://server
。
server
これを修正すると、との間にスラッシュがないため URI が間違っているという別の問題に直面しますtest.txt
。URI は である必要がありますftp://server/test.txt
。
いずれにしても、 を呼び出す意味がわかりませんTest-Connection
。 すぐにファイルをアップロードしてみてください。
答え2
コマンドを使用してget-content
IPアドレスのリストを取得し、pingを実行します。IPがライブの場合はFTPセッションを開き、ファイルをプリンターに送信します。
$printers = get-content "C:\......\servers.txt"
$info="C:\CommunityName.zpl"
$ftp = "ftp://$ip/dir/CommunityName.zpl"
$user = ""
$pass = ""
$webclient = New-Object System.Net.WebClient
$webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass)
foreach ($ip in $printers){
IF (Test-Connection -ComputerName $ip -Quiet -Count 1 -ErrorAction SilentlyContinue){
try { $uri = New-Object System.Uri($ftp)
$webclient.UploadFile($uri, $info)
Write-Host "UploadFile it's done $ip" -backGround Green
}
catch { Write-Host "An Error occured while uploading file to: $Uri" Throw
}
}
ELSE{ Write-Host "no conacting $ip" -backGround Red}
}