Die Webseite “The command line in Windows” von Vic Laurie enthält viele nützliche Informationen zur Windows Kommandozeile und zur Windows Powershell.
Ein Besuch für Anfänger lohnt sich auf jeden Fall.
Die Webseite “The command line in Windows” von Vic Laurie enthält viele nützliche Informationen zur Windows Kommandozeile und zur Windows Powershell.
Ein Besuch für Anfänger lohnt sich auf jeden Fall.
In mehreren Dateien soll ein bestimmter Text gesucht und falls vorhanden ersetzt werden und gerade kein Tool zur Hand? Die Powershell kann das!
Snippet:
1 | Get-ChildItem *.dat | Foreach-Object {Get-Content $_ | Out-String | Foreach-Object {$_.Replace("altes Haus","neues Schloß")} | Set-Content $_} |
Achtung:
Die ursprüglichen Dateien werden dabei überschrieben!
In einer Datei soll ein bestimmter Text gesucht und falls vorhanden ersetzt werden und gerade kein Tool zur Hand? Die Powershell kann das auch!
Snippet:
1 | Get-Content "D:\Test.txt" | Foreach-Object {$_.Replace("Alt","Neu")} | Set-Content "D:\Test_Neu.txt" |
Hier wird einfach der Inhalt der Datei “Test.txt” eingelesen und durchlaufen. Kommt der String “Alt” vor so wird dieser durch “Neu” ersetzt. Anschließend wird die Datei komplett in eine neue (“Test_Neu.txt”) geschrieben.
Möchte man wissen welche Dateien in einem Verzeichnis innerhalb der letzten X Minuten bearbeitet oder erstellt wurden, so hilft das folgende Snippet:
1 | Get-ChildItem -Recurse E:\ | Where-Object {$_.LastWriteTime -gt (Get-Date).AddMinutes(-15)} |
Das funktioniert auch mit Stunden oder Jahren. Einfach “AddMinutes” durch “AddHours” oder “AddYears” ersetzen.
Möglich wäre auch:
1 | Get-ChildItem -Recurse E:\ | Where-Object {$_ .lastwritetime –lt "2008/1/12"} |
Bei den älteren Skriptsprachen wie Batch oder Visual Basic Script war der Aufruf immer sehr einfach per Doppelklick möglich. Die Powershell erlaubt das so erst mal nicht mehr. Der folgende Aufruf zeigt aber, dass es doch noch geht.
Aufruf z.B. für Ausführen oder Eingabeaufforderung:
1 2 | powershell.exe -noexit "& X:\My Scripts\Powershell
\TestMe.ps1" |