Zum Inhalt

Monat: Februar 2011

Datei mittels PowerShell aktualisieren/kopieren

Will man eine Datei von einem Verzeichnis automatisch in anderes Verzeichnis kopieren, so kann man dies unter Windows relativ einfach mit einer Batch-Datei und der Aufgabenplanung erledigen.
Will man allerdings die Datei nur kopieren, wenn die Datei im Quellverzeichnis neuer ist als die Datei im Zielverzeichnis so geht dies mit einer Batch-Datei schon nicht mehr so einfach.

Zu diesem Zweck kann man sich aber ein PowerShell Skript schreiben, dass genau diese Funktionalität abbildet. Falls man bisher noch keine PowerShell Skripte auf seinem Rechner eingesetzt hat, muss man zunächst die sogenannte »ExecutionPolicy« ändern. Weitere Infos hierzu kann man dem folgenden Link entnehmen: Running Scripts From Within Windows PowerShell.
Abgekürtzt reicht es aus, wenn man eine Instanz der PowerShell als Administrator (also als Administrator ausführen) startet und den folgenden Befehl ausführt:

Set-ExecutionPolicy Unrestricted

Die Abfrage einfach mit »J« beantworten.

Auf einem Testsystem kann man diesen Befehl so verwenden, auf einem produktiven System (bspw. Server) sollte man dies nicht einsetzen, wenn man nicht weiß, welche Konsequenzen hieraus resultieren können.

$BackEndDir = "C:\PowerShellCopy\Backend\"
$BackEndFile = "ImportantInformation.txt"
$FrontEndDir = "C:\PowerShellCopy\Frontend\"
 
if ( !$BackEndDir.EndsWith("\") )
{ $BackEndDir = $BackEndDir + "\" }
if ( !$FrontEndDir.EndsWith("\") )
{ $FrontEndDir = $FrontEndDir + "\" }
 
$BackFile = $BackEndDir + $BackEndFile
$FrontFile = $FrontEndDir + $BackEndFile
 
if ( !(Test-Path $BackFile) )
{
    Write-Host("Datei im Backend ist nicht vorhanden")
    return
}
 
$objBackFile = get-item $BackFile
$objBackFileLWT = [datetime]$objBackFile.LastWriteTimeUTC
 
Write-Host ("BackEndDatei: " + $objBackFileLWT)
 
If ( (Test-Path $FrontFile) )
{
    echo "Datei vorhanden"
    $objFrontFile = get-item $FrontFile
    $objFrontFileLWT = [datetime]$objFrontFile.LastWriteTimeUTC
    Write-Host ("FrontEndDatei: " + $objFrontFileLWT)
    if ($objBackFileLWT -gt $objFrontFileLWT)
    {
        Write-Host ("Datei wird im FrontEnd aktualisiert")
        Copy-Item $BackFile $FrontEndDir
    }
    else
    {
        Write-Host ("Datei im FrontEnd ist gleich alt bzw. aktueller")
    }
}
Else
{
    Write-Host ("Datei nicht vorhanden")
}

Für die eigene Verwendung müssen im Grunde nur noch die Verzeichnispfade und der Dateiname in den ersten drei Zeilen angepast werden.

Führt man dann dieses PowerShell Skript mittels der Aufgabenplanung aus, so wird die Datei aus dem Backend-Verzeichnis immer dann in das Frontend-Verzeichnis kopiert, nur wenn diese auch wirklich aktueller ist. Somit ist man immer auf dem aktuellsten Stand, verhindert aber unnötige Kopieraktionen, was gerade bei großen Dateien ein Vorteil sein kann.

Quellen:
Converting the FileSystemObject’s FileExists Method
Using the Copy-Item Cmdlet
Verwenden des Cmdlet „Set-ExecutionPolicy“
Windows PowerShell Tip: The String’s the Thing

Sennheiser HD555 in HD595 „verwandeln“

Bei fefe habe ich gerade gelesen, dass es wohl eine einfach Möglichkeit geben soll aus einem Sennheiser HD 555 einen Sennheiser HD 595 zu machen.

Hier mal der Link zu dem Artikel aus dem Artikel von fefe: sennheiser hd 555 to hd 595 mod

Da ich eben genau diesen HD 555 mein Eigen nenne, habe ich dann noch eine Anleitung in Bildern gesucht und bei bin youtube fündig geworden. Darum hier die Anleitung hin bewegten Bildern.

Der gesamte „Umbau“, wenn man es überhaupt so nennen kann, ist wirklich sehr einfach und war bei mir innerhalb von 5 Minuten erledigt. Auch wenn ich nicht unbedingt eine audiophile Person bin, bilde ich mir eine Verbesserung im Klangbild nach dem „Umbau“ feststellen zu können.

via blog.fefe.de