Тестирование подключения к FTP-серверу с помощью PowerShell Test-Connection
Я пытаюсь с этим сценарием, но он не работает для меня
$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"}
когда я запускаю скрипт, у меня появляется сообщение "ошибка" на хосте, это означает, что нет контакта с сервером, но когда я пингую сервер, ответ
2 ответа
Как уже прокомментировал @flolilolilo, Test-Connection
принимает имя хоста, а не URL, поэтому вы должны вызвать его с server
только не ftp://server
,
Как только вы исправите это, вы столкнетесь с другой проблемой: ваш URI неверен, так как вы пропускаете косую черту между server
а также test.txt
, URI должен быть ftp://server/test.txt
,
И вообще я не вижу смысла звонить Test-Connection
, Просто попробуйте загрузить файл прямо сейчас.
Я использую команду get-content
получить список IP-адресов и пропинговать его, если IP-адрес Live открыт 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}
}