Powershell 2.0 für Windows 7

Die 12 besten Cmdlets für die Powershell

von - 24.10.2011
Die Powershell ist mit rund 230 Cmdlets ausgestattet. Die Befehle ermöglichen es dem ambitionierten Anwender, schnell auf wichtige Windows-Funktionen zuzugreifen und detaillierte Infos zum PC und zu Windows zu erhalten. Auf diese Weise lässt sich Windows komfortabel analysieren, tunen, absichern und verwalten.
Der folgende Abschnitt stellt die zwölf besten Cmdlets vor und erklärt, wie Sie diese nutzen. Sie können mit den Cmdlets zum Beispiel Windows-Prozesse und die Registry überwachen oder die Hardware Ihres PCs analysieren.

1. get-wmiobject

BIOS-Version auslesen: Der Befehl get-wmiobject liest die BIOS-Version unter Windows aus. Sie brauchen den PC dazu nicht neu zu booten.
BIOS-Version auslesen: Der Befehl get-wmiobject liest die BIOS-Version unter Windows aus. Sie brauchen den PC dazu nicht neu zu booten.
Die Verwaltungsbibliothek Windows Management Instrumentation (WMI) sammelt alle Daten zum PC und zu Windows. Die Powershell greift direkt auf diese Informationen zu. Auf der Kommandozeile rufen Sie Angaben zu Prozessor, Grafikchip, BIOS, Speicher und Betriebssystem mit dem Cmdlet get-wmiobject ab.
CPU und GPU analysieren: Klarheit über die eingebaute CPU bringt der Befehl get-wmiobject win32_processor. In der Ausgabe sind alle wichtigen Angaben zum Prozessor und dessen Funktionen aufgelistet.
Wollen Sie nur die Produktbezeichnung der CPU erfahren, verwenden Sie den Befehl (get-wmiobject win32_processor).name.
Gleiches gilt für die Grafikkarte. Das Kommando get-wmiobject win32_videocontroller gibt die Details zur Grafikkarte aus.
Speicherbelegung bestimmen: Auch die Speicherbestückung lässt sich per Kommando ermitteln. Der Befehl
get-wmiobject win32_physical memory | format-table tag, banklabel, devicelocator, capacity
gibt die gewünschten Informationen im Tabellenformat aus.
Dieser Befehl birgt eine Besonderheit der Powershell: Hier werden zwei Befehle miteinander verknüpft. Mit dem ersten Teil get-wmiobject rufen Sie die Informationen zum Speicher ab und übergeben das Ergebnis an den zweiten Befehl format-table, der die gewünschten Infos filtert und in einer Tabelle darstellt. Getrennt werden beide Befehle durch das Pipe-Symbol „|“, das Sie mit dem Tastenkürzel [Alt Gr <] eingeben.
BIOS-Version auslesen: Für ein BIOS-Update muss man die aktuelle BIOS-Version kennen. Windows ist die Info nicht leicht zu entlocken. In der Powershell genügt der Befehl get-wmiobject win32_bios, und schon sehen Sie die Versionsnummer.

2. get-hotfix

Wenn Sie prüfen möchten, ob auf Ihrem Rechner ein bestimmtes Update vorhanden ist, kommen Sie mit der Powershell und dem Befehl get-hotfix wesentlich schneller ans Ziel, als wenn Sie sich durch die vielen Dialogfenster von Windows klicken.
Updates auflisten: Um beispielsweise nachzuprüfen, ob der Patch KB972270 installiert ist, tippen Sie get-hotfix –id kb972270 ein. Wenn er nicht vorhanden ist, gibt die Powershell eine Fehlermeldung aus.
Um alle installierten Security-Updates anzuzeigen, verwenden Sie das Kommando get-hotfix –description security*. In der Ausgabe sehen Sie dann alle Updates, in deren Beschreibung die Zeichenfolge „security“ vorkommt.
Update-Liste erstellen: Eine Liste aller auf dem Rechner installierten Updates lässt sich auch in ein HTML-Dokument exportieren. Geben Sie dazu folgenden Befehl ein:
get-hotfix | select-object description, hotfixid | where-object {$_.description -ne ''} | convertto-html > hotfixliste.html
Im aktuellen Arbeitsverzeichnis befindet sich anschließend das entsprechende HTML-Dokument.

3. get-process

get-process:Wenn ein Prozess mehr als einmal vorhanden ist, dann sollten Sie prüfen, ob es sich dabei um einen Trojaner handelt.
get-process:Wenn ein Prozess mehr als einmal vorhanden ist, dann sollten Sie prüfen, ob es sich dabei um einen Trojaner handelt.
Analysieren Sie mit der Powershell die Prozesse Ihres Windows.
Schädlinge finden: Trojaner tarnen sich mit dem Namen eines Systemprozesses. Man kann sie aber daran erkennen, dass sie nicht aus dem Systemverzeichnis gestartet wurden. Die folgende Befehlskette zeigt Prozesse an, die unter demselben Namen laufen und mehr als einmal gestartet wurden. Außerdem zeigt sie für jeden Prozess das Verzeichnis an, aus dem er gestartet wurde:
get-process | group-object {$_ name} | where-object {$_.count -gt 1} | foreach-object {get-process $_.name} | format-list name, path
Der Aufruf enthält fünf Cmdlets. Der Befehl get-process ruft die aktiven Prozesse ab. Das Kommando group-object mit dem Argument $_.name gruppiert sie dem Namen nach. Prozesse, die mehr als einmal vorkommen, filtert where-object mit $_.count heraus. Der Befehl foreach-object ruft für jeden der ausgewählten Prozesse erneut das Kommando get-process auf. Das bringt die Liste der Doppelgänger ins Bild. Der Befehl format-list name, path formatiert die Liste.

4. get-childitem

get-childitem: Der Befehl durchsucht das Laufwerk „F:\“ nach Dateien, die größer sind als 4 GByte. Die Funde werden sortiert und absteigend am Bildschirm angezeigt. Ergebnis: Die größte Datei ist „dragon1.iso“ mit über 8 GByte. Danach kommen zwei Backup-D
get-childitem: Der Befehl durchsucht das Laufwerk „F:\“ nach Dateien, die größer sind als 4 GByte. Die Funde werden sortiert und absteigend am Bildschirm angezeigt. Ergebnis: Die größte Datei ist „dragon1.iso“ mit über 8 GByte. Danach kommen zwei Backup-Dateien mit 5 GByte und 4,8 GByte.
Die Powershell ist auch nützlich, wenn es darum geht, die Festplatte zu entrümpeln. Duplikate oder temporäre Dateien lassen sich ganz einfach mit dem Befehl get-childitem aufstöbern.
Speicherplatz freigeben: Temporäre Dateien beispielsweise zeigt der Befehl get-childitem.–recurse c:\*.tmp an. Um die temporären Dateien zu löschen, verwenden Sie das Kommando get-childitem -recurse c:\*.tmp | remove-item.
Speicherfresser finden: Spüren Sie mit folgendem Befehl große Dateien auf.
get-childitem -recurse f:\ | where-object {$_.length gt 4gb} | sort-object.length -descending
Das Cmdlet get-childitem durchsucht mit dem Parameter -recurse alle Unterverzeichnisse des Laufwerks „F:“. Das Cmdlet where-object.{$_.length -gt 4gb} sucht nach allen Dateien, die größer als 4 GByte sind, und der Befehl sort-object gibt das Ergebnis sortiert aus.

5. copy-item

Das Cmdlet copy-item hilft beim Kopieren von Dateien und Verzeichnissen.
Datei kopieren: Um zum Beispiel die Datei „Test.txt“ aus dem Verzeichnis „C:\Texte“ in den Ordner „F:\Backup“ zu kopieren, verwenden Sie das Kommando copy-item c:\texte\test.txt f:\backup.
Verzeichnisse kopieren: Wenn Sie den Ordner „C:\Texte“ inklusive der Unterverzeichnisse in den Ordner „F:\Backup“ kopieren wollen, tippen Sie den Parameter copy-item c:\texte\ f:\backup -recurse.

6. move-item

Verschieben lassen sich Dateien mit dem Kommando move-item. Wie beim Befehl copy-item lautet der Grundbefehl move-item c:\texte\test.txt f:\backup, damit die Datei „Test.txt“ von „C:\Texte“ in das Verzeichnis „F:\Backup“ verschoben wird.
Bilder verschieben: Um alle Dateien eines bestimmten Typs – etwa alle JPG-Dateien – von Laufwerk „C:“ in den Ordner „F:\Bilder“ zu verschieben, verknüpfen Sie den Suchbefehl get-childitem mit dem Cmdlet move-item. Das Kommando lautet dann
get-childitem -recurse c:\ -include *.jpg | move-item -dest f:\bilder

7. remove-item

Die Powershell bringt zum Löschen von Ordnern und Dateien das Cmdlet remove-item mit.
Datei löschen: Um beispielsweise die Datei „Test.txt“ im Ordner „C:\Texte“ zu löschen, verwenden Sie den Befehl remove-item c:\texte\test.txt.
Ordner löschen: Wer den Inhalt eines Verzeichnisses samt allen Unterverzeichnissen entfernen möchte, tippt remove-item c:\texte\* -recurse ein. Der Platzhalter * steht dabei für alles, was sich im Verzeichnis befindet. Der Parameter -recurse weist das Cmdlet an, auch die Unterverzeichnisse zu entfernen.

8. get-computerrestorepoint

get-computerrestorepoint: Das Cmdlet zeigt hier alle verfügbaren Wiederherstellungspunkte an. Die Parameter restore-computer und checkpoint-computer spielen Wiederherstellungspunkte zurück und erstellen neue.
get-computerrestorepoint: Das Cmdlet zeigt hier alle verfügbaren Wiederherstellungspunkte an. Die Parameter restore-computer und checkpoint-computer spielen Wiederherstellungspunkte zurück und erstellen neue.
Neben Dateioperationen lassen sich mit der Powershell auch Sicherheitsfunktionen wie die Systemwiederherstellung steuern. Dazu müssen Sie die Power-shell als Administrator ausführen.
Wiederherstellungspunkte auflisten: Lassen Sie sich mit dem Befehl get-computerrestorepoint die vorhandenen Wiederherstellungspunkte anzeigen. In der ausgegebenen Liste finden Sie unter „Description“ eine Kurzbeschreibung mit dem Anlass, aus dem ein Wiederherstellungspunkt erstellt wurde, und unter „SequenceNumber“ die eindeutige Bezeichnung des Wiederherstellungspunkts.
System wiederherstellen: Diese „SequenceNumber“ benötigen Sie für die Wiederherstellung. Tippen Sie dazu restore-computer X ein, wobei das „X“ für den Wiederherstellungspunkt steht, zu dem Sie zurückkehren wollen.
Wiederherstellungspunkt erstellen: Es lässt sich aber auch ein Wiederherstellungspunkt manuell anlegen. Verwenden Sie dazu den Befehl checkpoint-computer."Ihre Beschreibung".

9. set-acl

Mit der Powershell lassen sich auch die Zugriffsrechte von Dateien setzen. Für diese Aufgaben bringt die Powershell die Cmdlets get-acl und set-acl mit.
Zugriffsrechte setzen: Die Kombination der Befehle get-acl und set-acl kopiert die Zugriffsrechte von einer Datei auf die andere. Wenn Sie beispielsweise die Zugriffsrechte der Datei „Mein.txt“ auf die Datei „Text.txt“ anwenden wollen, kopieren Sie die Rechte mit dem Befehl:
get-acl d:\mein.txt | set-acl -path d:\test.txt

10. get-counter

Wer mit der Leistung seines Rechners unzufrieden ist, führt mit der Powershell eine Leistungsanalyse durch. Das Cmdlet get-counter hilft dabei. Es greift in Echtzeit auf die Daten des Windows-Ressourcenmonitors zu und gibt sie direkt auf dem Bildschirm aus.
CPU überwachen: Um zum Beispiel die Prozessorzeit über einen Zeitraum von zehn Sekunden zu verfolgen, verwenden Sie folgenden Befehl:
get-counter "\prozessor(*)\prozessorzeit.(%)" -maxsamples 10
Damit lässt sich ermitteln, ob ein rechenintensives Programm Multicore-fähig ist. Es lassen sich aber auch andere Bestandteile des PCs überwachen. Eine vollständige Liste der möglichen Parameter liefert Ihnen das Kommando get-counter -listset *.

11. get-content

Das Cmdlet get-content dient in der Hauptsache dazu, den Inhalt einer Datei in der Eingabeaufforderung abzubilden. Das Cmdlet lässt sich aber noch für andere Zwecke nutzen.
Zeilen auslesen: Der Befehl (get-content d:\history_en.txt -totalcount.5)[-1] bewirkt, dass die fünfte Zeile der Datei „history_en.txt“ angezeigt wird.
Text exportieren: Wer die ersten 100 Zeilen einer umfangreichen Bestenliste in eine neue Datei übertragen will, hängt das Cmdlet set-content an. Der Befehl lautet
get-content D:\Open-Source\Bestenliste.txt -totalcount.100 | set-content D:\top100.txt

12. Get-itemproperty

Informationen etwa zur Registry zeigt das Cmdlet get-itemproperty an. Die Registry lässt sich in der Powershell wie ein Ordner mit Unterordnern ansprechen. Um etwa in den Zweig „HKEY_LOCAL_MACHINE“ zu wechseln, verwenden Sie den Befehl
set-location hklm:\
Sie sehen, der Registry-Zweig wird mit den Anfangsbuchstaben der einzelnen Wörter des Zweiges abgekürzt. Gleiches gilt auch für den Zweig HKEY_CURRENT_USER. Hier lautet die Abkürzung hkcu:\.
Im folgenden Beispiel überprüfen Sie die Autostart-Einträge in der Registry Ihres Windows. Sie sehen dann auf einen Blick, welche Programme beim Start von Windows automatisch geladen werden.
Autostart untersuchen: Wer wissen möchte, welche Programme Windows beim Start automatisch lädt, wendet die folgenden zwei Befehle an.
Die beiden Kommandos zeigen die Autostart-Einträge in den Registry-Zweigen „HKEY_LOCAL_MACHINE sowie HKEY_CURRENT_USER:
get-itemproperty hklm:\software\microsoft\windows\currentversion\run
und:
get-itemproperty hkcu:\software\microsoft\windows\currentversion\run
Verwandte Themen