Ich habe es mit diesem Skript versucht, aber es hat bei mir nicht funktioniert
$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"}
Wenn ich das Skript ausführe, erhalte ich die Meldung „Fehler“ im Host. Dies bedeutet, dass kein Kontakt zum Server besteht. Wenn ich jedoch einen Ping ansende, antwortet der Server.
Antwort1
Wie @flolilolilo bereits kommentierte,Test-Connection
akzeptiert einen Hostnamen, keine URL, Sie müssen es also server
nur mit aufrufen, nicht mit ftp://server
.
server
Sobald Sie das behoben haben, werden Sie mit einem weiteren Problem konfrontiert: Ihre URI ist falsch, da zwischen und ein Schrägstrich fehlt test.txt
. Die URI sollte lauten ftp://server/test.txt
.
Und außerdem sehe ich keinen Sinn darin, anzurufen Test-Connection
. Versuchen Sie einfach, die Datei sofort hochzuladen.
Antwort2
Ich verwende den Befehl, get-content
um eine Liste der IP-Adressen zu erhalten und sie anzupingen. Wenn die IP eine Live-FTP-Sitzung öffnet, wird die Datei an den Drucker gesendet.
$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}
}