Heute habe ich mal zum Einstieg in die Windows PowerShell ein kleines Script erstellt, dass meine RSSOwl-Konfigurationsdatei auf meinen FTP-Server kopiert bzw. von dort herunterlädt. Die Datei ständig manuell zwischen 3 PCs (Arbeit, Privat, Laptop) zu synchronisieren ging mir mit der Zeit doch auf den Senkel…
Das Script basiert auf einem Beispiel von Joannes Vermorel. Ich habe es nur ein wenig erweitert. Das fertige Script sieht nun wie folgt aus. Es benötigt lediglich einen Parameter: up oder down.
Param ($UpDown = "up");
$Server = "ftp.server.com";
$User = "username";
$Password = "password";
function ExecuteFTPCommands($FileCommand)
{
$FtpCommandFilePath = [System.IO.Path]::GetFullPath("FTPCommand.tmp");
$FtpCommands = @( $User, $Password, "cd RSSOwl", "bin", "quote pasv", $FileCommand, "quit" );
$FtpCommand = [String]::Join( "`r`n", $FtpCommands );
set-content $FtpCommandFilePath $FtpCommand;
ftp "-s:$FtpCommandFilePath" $Server;
remove-item $FtpCommandFilePath;
}
# Get path of local user profile
$UserProfile = $env:UserProfile;
$RSSOwlPath = $UserProfile + "\.rssowl";
$RSSOwlFile = $RSSOwlPath + "\user.xml";
# check whether RSSOwl's config file exists
if (!(Test-Path $RSSOwlFile))
{
write-host ("RSSOwl file not found: " + $RSSOwlFile) -foregroundcolor "red";
exit;
}
if ($UpDown.equals("up"))
{
write-host "Uploading RSSOwl's config file..." -foregroundcolor "green";
$FtpUploadCommand = 'PUT "' + $RSSOwlFile + '"';
ExecuteFTPCommands([string]$ftpUploadCommand);
}
elseif ($UpDown.equals("down"))
{
write-host "Downloading RSSOwl's config file..." -foregroundcolor "green";
$FtpUploadCommand = 'GET "user.xml"';
ExecuteFTPCommands([string]$ftpUploadCommand);
Move-Item user.xml $RSSOwlPath -force;
C:\Programme\RSSOwl\rssowl.exe
}
else
{
write-host ("Wrong parameter: " + $UpDown + "`nAllowed: 'up' or 'down'") -foregroundcolor "red";
}