Ich bin gerade dabei Powershell zu lernen und arbeite an einem kleinen Skript, das jede Nacht eine Gruppe von Dateien auf einen FTPS-Server hochlädt. Die Dateien befinden sich auf einer Netzwerkfreigabe in einem Unterverzeichnis, das das Datum in dem Name enthält. Die Dateien selbst beginnen alle mit der gleichen Zeichenfolge, sagen wir "JONES_". Ich habe dieses Skript für FTP arbeiten, aber ich verstehe nicht ganz, was ich tun müssen, um bekommen für FTPS zu arbeiten:FTPS-Upload in Powershell
# Set yesterday's date (since uploads will happen at 2am)
$YDate = (Get-Date).AddDays(-1).ToString('MM-dd-yyyy')
#Create Log File
$Logfile = "C:\powershell\$YDate.log"
Function LogWrite
{
Param ([string]$logstring)
Add-Content $Logfile -value $logstring
}
# Find Directory w/ Yesterday's Date in name
$YesterdayFolder = Get-ChildItem -Path "\\network\storage\location" | Where-Object {$_.FullName.contains($YDate)}
If ($YesterdayFolder) {
#we specify the directory where all files that we want to upload are contained
$Dir= $YesterdayFolder
#ftp server
$ftp = "ftp://ftps.site.com"
$user = "USERNAME"
$pass = "PASSWORD"
$webclient = New-Object System.Net.WebClient
$webclient.Credentials = New-Object System.Net.NetworkCredential($user,$pass)
$FilesToUpload = Get-ChildItem -Path (Join-Path $YesterdayFolder.FullName "Report") | Where-Object {$_.Name.StartsWith("JONES","CurrentCultureIgnoreCase")}
foreach($item in ($FilesToUpload))
{
LogWrite "Uploading file: $YesterdayFolder\Report\$item"
$uri = New-Object System.Uri($ftp+$item.Name)
$webclient.UploadFile($uri, $item.FullName)
}
} Else {
LogWrite "No files to upload"
}
Ich möchte lieber nicht mit einem 3rd-Party-Software-Lösung zu tun haben, Wenn überhaupt möglich.
Ich nehme die Zeile: '& \ psftp.exe -l $ user -pw $ geben $ ftp -b batch.psftp -be' ersetzt. ' $ webclient = New-Object System.Net. WebClient $ webclient.Credentials = New-Objekt System.Net.NetworkCredential ($ user, $ pass) ' ? – jms2k
Ich denke, es ersetzt mehrere Zeilen in dem Code, den Sie vorgestellt haben. Im Wesentlichen wird psftp ausgeführt, wobei der Benutzername, das Passwort und die Liste der auszuführenden Befehle übergeben werden, was bedeutet, dass eine Codezeile das Anmelden und Hochladen der fraglichen Datei übernimmt. Das entfernt 3 Codezeilen nach meiner Zählung, aber Sie können es nach Belieben implementieren. – morgb