Eu tentei com este script, mas não funcionou para mim
$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"}
quando executo o script, recebo a mensagem "erro" no host, significa que não há contato com o servidor, mas quando faço ping, o servidor responde
Responder1
Como @flolilolilo já comentou, oTest-Connection
aceita um nome de host, não URL, então você deve chamá-lo server
apenas com, não ftp://server
.
Depois de corrigir isso, você enfrentará outro problema: seu URI está errado, pois está faltando uma barra entre server
e test.txt
. A URI deve ser ftp://server/test.txt
.
E de qualquer forma, não vejo sentido em ligar Test-Connection
. Tente fazer upload do arquivo imediatamente.
Responder2
Eu uso o comando get-content
para obter uma lista de endereços IP e fazer ping, se o IP for uma sessão FTP ao vivo e enviar o arquivo para a impressora
$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}
}