FTP Upload mit PowerShell automatisieren

Erstellt am 7. Dezember 2012 von Cyborg2k @gamorz

Ich hatte gerade die Problemstellung dass einige Datein regelmäßig auf einem FTP Server hochgeladen werden mussten.
Da kaum ein FTP Client zu finden ist der diese Funktion bereitstellen würde habe ich mir ein PowerShell Script zurecht gelegt.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#FTP Multiple File Upload Script by Michael Reischl http://www.gamorz.de /-/ V.3
#Based on FTP Upload Script from http://www.thomasmaurer.ch
# FTP Config
$Username = "ftpuser" #FTP User
$Password = "ftppass" #FTP Password
$Dir = "\\unc\path\or\local\path/" #Local Folder
$RemotePath = "ftp://ftp.server.de/complete/path/" #Ftp Server + Folder
#Start Loop to Upload every file in Local Folder, files can be filtered.
foreach($item in (dir $Dir "*.crl"))
{
# Create FTP Request Object
$FTPRequest = [System.Net.FtpWebRequest]::Create("$RemotePath$item")
$FTPRequest = [System.Net.FtpWebRequest]$FTPRequest
$FTPRequest.Method = [System.Net.WebRequestMethods+Ftp]::UploadFile
$FTPRequest.Credentials = new-object System.Net.NetworkCredential($Username, $Password)
$FTPRequest.UseBinary = $true
$FTPRequest.UsePassive = $true
# Read the File for Upload
$FileContent = gc -en byte $item.Fullname
$FTPRequest.ContentLength = $FileContent.Length
# Get Stream Request by bytes
$Run = $FTPRequest.GetRequestStream()
$Run.Write($FileContent, 0, $FileContent.Length)
# Cleanup
$Run.Close()
$Run.Dispose()
}

Download FTP Upload Script

Damit lässt sich nun bequem und Zeitgesteuert ein ganzes Verzeichnis auf einen FTP Server stellen.
Wunderbar geeignet um z.B. die Zertifikatssperrlisten in Verbindung mit einem SSTP Server aktuell zu halten.