PowerShell Test-Connection を使用して FTP サーバーへの接続をテストする

PowerShell Test-Connection を使用して FTP サーバーへの接続をテストする

このスクリプトを試してみましたが、うまくいきませんでした

$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-Connectionserverは URL ではなくホスト名を受け入れるため、ではなく のみを使用して呼び出す必要がありますftp://server

serverこれを修正すると、との間にスラッシュがないため URI が間違っているという別の問題に直面しますtest.txt。URI は である必要がありますftp://server/test.txt


いずれにしても、 を呼び出す意味がわかりませんTest-Connection。 すぐにファイルをアップロードしてみてください。

答え2

コマンドを使用してget-contentIPアドレスのリストを取得し、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}
}

関連情報