Scripts

    Get-Date: Datum berechnen und formatieren in Powershell

    Ruft man das Cmdlet Get-Date ohne Argumente auf, dann gibt es nur das Systemdatum aus. Daraus soll man jedoch nicht den voreiligen Schluss ziehen, dass es sich dabei nur um die Powershell-Entsprechung zum date-Befehl von cmd.exe handelt. Vielmehr beherrscht es fast beliebige Datumsberechnungen und Datumsformate.

    Get-ChildItem: Dateien anzeigen in PowerShell

    Im Gegensatz zu Visual Basic Script ist PowerShell nicht nur eine Script-Umgebung, sondern auch eine interaktive Shell. Daher möchte man dort Äquivalente zu den in cmd.exe tagtäglich genutzten Befehlen finden. Das Gegenstück zum Allerweltskommando dir ist in Powershell Get-ChildItem, nur mit dem Unterschied, dass es wesentlich mehr kann.

    Speicherverbrauch reduzieren mit Deduplizierung: Source versus Target, Inline versus Post-Processing

    Speicherverbrauch reduzieren durch DeduplizierungDedu­plizierung redu­ziert die Daten­mengen und senkt so die Storage-Kosten. Der­artige Lösungen waren bislang kost­spielig und häufig an Speicher-Hardware gebunden. Moderne Backup-Software bringt diese Funktion aber inzwischen selbst mit, wobei mehrere Verfahren hinsichtlich Ort und Zeitpunkt üblich sind.*

    Wörter und Zeichen zählen mit PowerShell

    Die PowerShell bietet alle wesentlichen Werkzeuge zur Bearbeitung und Analyse von Textdateien. Dazu zählt nicht nur die Suche nach dem Vorbild von grep mit select-string, sondern auch das Zählen von Zeichen, Wörtern und Zeilen nach dem Muster von wc unter Unix.

    Get-Content: Dateien einlesen mit Powershell

    Den Inhalt einer Text­datei einzulesen und zu filtern gehört zu den Standard­aufgaben in der System­verwaltung, sei es inner­halb von Scripts oder auf der Kommando­zeile. Auch hier hat Powershell mit dem Cmdlet Get-Content mehr zu bieten als Uralt-Kommandos wie type.

    Select-String: In Dateien suchen mit PowerShell

    Windows besitzt mit find und findstr bereits 2 Kommandozeilen-Tools, mit denen man Textdateien durchsuchen kann. Das PowerShell-eigene Mittel für diesen Zweck ist indes Select-String, das gegenüber den alten Dienstprogrammen einige wesentliche Vorteile bietet. Da die PowerShell nicht nur eine Script-Umgebung, sondern auch eine interaktive Shell ist, empfiehlt sich Select-String als mächtigere Alternative zu den bisherigen Kommandozeilen-Tools.

    Registry-Schlüssel auslesen mit Powershell

    Registry-IconPowershell kann die Registrier­datenbank als Lauf­werk (PSDrive) zugäng­lich machen. Dies erlaubt die Navi­gation durch die hierar­chische Struktur der Registry wie bei einem Ver­zeichnis­system. Dabei las­sen sich Schlüssel und ihre Werte relativ ein­fach auslesen, filtern und in ver­schiedenen For­maten darstellen.

    Mitgliedschaft eines Users in Active-Directory-Gruppen ausgeben

    Ein AD-User kann neben seiner primären Gruppe Mitglied in anderen Gruppen sein. Dafür gibt es im AD die Attribute PrimaryGroup und MemberOf, die per Get-AdUser gemeinsam abgefragt werden. Die Abfrage selber ist sehr einfach, die Schwierigkeit für alle, die bei der PowerShell erst am Anfang stehen besteht darin, die Namen zu einer einzigen Ausgabe zusammenzufassen.

    Wget-Pedant: HTTP-Download in PowerShell

    Unix-Fans kennen das Wget-Kommando, das mit einem Aufruf den Inhalt einer Webseite herunterladen kann. Ein direktes Pendant gibt es bei der PowerShell nicht, aber wer in der Suchmaschine die Worte "Wget PowerShell" eingibt wird schnell fündig. Die meisten Lösungen basieren auf der WebClient-Klasse im Namespace System.Net, die sich sehr einfach ansprechen lässt.

    Große Dateien kopieren mit BITS und Powershell

    Für das Kopieren von (großen) Dateien hat die PowerShell (zwangsläufig) einiges zu bieten. Neben dem etwas schlichten Copy-Item-Cmdlet (das z.B. keine Anmeldung an eine Freigabe ermöglicht) stehen die Windows-Befehle XCopy und der inoffizielle Nachfolger RoboCopy (für „Robust Copy“) zur Auswahl. Beide werden exakt auf dieselbe Art und Weise aufgerufen, wie innerhalb der "regulären" Befehlszeile.

    Registry-Schlüssel hinzufügen und löschen mit Powershell

    Die Powershell verfügt über einen Provider für die Registrierdatenbank, so dass sich einzelne Teilbäume ("Hives") wie Laufwerke mounten lassen. Anschließend kann man durch die Verzeichnisstruktur navigieren wie im Dateisystem und dort neue Schlüssel anlegen oder vorhandene löschen.

    Seiten