Zum Inhalt springen
Der Guide für ein smartes Leben.
Galerie

Tipps zum Arbeiten mit Powershell

Autor: Andreas Maslo • 8.11.2011

image.jpg
1

Die PowerShell ist Bestandteil des Windows Management Framework.

Tipp 2: Powershell 2.0 nachrüsten

Stellt ein aktuelles Windows-System die PowerShell nicht standardmäßig bereit, richten Sie sie über eine Download-Komponente nachträglich ein und sorgen so für die einheitliche Verwaltung unter allen gängigen Windows-Systemen.


Arbeiten Sie mit einem zuvor nicht genannten Windows-System, ist die Powershell 2.0 gesondert einzurichten. Sind Sie sich nicht sicher, ob die Installation bereits erfolgt ist oder wollen Sie prüfen, welche PowerShell-Version eingerichtet ist, suchen Sie zunächst den Startmenübefehl Start/Alle Programme/Zubehör/Windows Powershell auf. In der Version 2.0 finden Sie zwei wichtige Befehle, gegebenenfalls in gesonderten 32- und 64-Bit-Varianten. Darüber starten Sie die Scripting-Umgebung (Powershell-ISE) oder die Powershell-Eingabeaufforderung.

Fehlen die Powershell-Programmeinträge oder steht kein ISE-Programmeintrag zur Verfügung, kümmern Sie sich um die Neuinstallation oder eine Aktualisierung. Die Komponente ist über die Internetseite https://support.microsoft.com/kb/968929 in systemspezifischen 32- und 64-Bit-Versionen, in unterschiedlichen Sprachvarianten und für unterschiedliche Windows-Systeme (Windows Server 2003 SP2, Windows Vista SP1/SP2, XP SP3 und Windows Server 2008 SP1/SP2) erhältlich.

Die Komponente steht nicht unter der Bezeichnung PowerShell 2.0, sondern Windows Management Framework Core (KB968930) als Update bereit. Das Update enthält neben der aktuellen PowerShell erweiterte Komponenten für das Windows Remote Management (Rechnerfernsteuerung im Netzwerk) sowie für den Background Intelligent Transfer Service (BITS, Dateiübertragung zwischen Server und Client). Der letztgenannte Dienst kann in XP- und Server-2003-Versionen allerdings nicht eingerichtet werden. Nachdem Sie die Komponente für Ihr System heruntergeladen haben, richten Sie das Programm ein, indem Sie die Komponente ausführen.

© PC Magazin
image.jpg
2

Versionsabfrage: Eine Variable legt in der Version 2.0 wichtige Versionsinformationen offen.

Tipp 3: Powershell starten und Version abfragen

In welcher Version eine eingerichtete PowerShell vorliegt, fragen Sie direkt an der PowerShell-Eingabeaufforderung ab.


Die Powershell wurde Ende 2006 in der Version 1.0 erstmalig verfügbar gemacht. Seit Ende 2009 ist die Version 2.0 erhältlich. Um Aneffektiv zu arbeiten, sollten Sie sicherstellen, dass die aktuelle Version installiert wurde. Ist die PowerShell 2.0 eingerichtet, fragen Sie die Version gezielt durch Eingabe und Bestätigung der PowerShell-Variablen $PSVersionTable.psversion ab.

Erweiterte Informationen zur .NET- (CLRVersion = Version der Common Language Runtime beziehungsweise der .NET-Laufzeitumgebung), zur PowerShell- (PSVersion) oder auch zu anderen wichtigen Komponenten-Versionen (z.B. WSManStackVersion für das Remoting) liefert die allgemeine Abfrage der Variablen $PSVersionTable zurück. Die Variable $PSVersionTable ist in der PowerShell-Version 1.0 noch nicht definiert. Die Existenz der Variable fragen Sie daher bei Bedarf gesondert über die folgende Anweisung an der PowerShell-Eingabeaufforderung ab:

test-path variable:psversiontable

Die Abfrage liefert den Wahrheitswert True unter der Version 2.0 und den Wert False unter der Version 1.0 zurück.

© PC Magazin
image.jpg
3

Bunt und übersichtlich: Syntaxfarbgebung in der Powershell-ISE.

Tipp 4: Scripting-Umgebung verwenden

Um Befehle in Skripten zusammenzufassen, Skripte komfortabel zu testen und auszuführen, greifen Sie auf Scripting-Umgebungen zurück (Integrated Scripting Environment, kurz ISE).


Standardmäßig erhalten Sie bereits mit der PowerShell 2.0 eine grundlegende Skripting-Umgebung. Diese beinhaltet einen Editor, einen Debugger sowie eine PowerShell-Eingabeaufforderung. In Skripten lassen sich mehrere Befehle kombinieren, Eingaben abfragen und Ausgaben vornehmen. Das folgende Skript zeigt die Versionsabfrage unter Verwendung der PowerShell-Variablen $PSVersionTable.

Nachdem die Existenz der Variablen im Skript über eine If-Abfrage ermittelt ist, wird die Versionsabfrage vorgenommen beziehungsweise fest zugewiesen und der Variablen $Version zugewiesen. Das Ergebnis wird über das CmdLet Write und den Befehl Output über die Variable $Version ausgegeben. Kommentare im Skript werden über ein Doppelkreuz eingeleitet.

# Versionsabfrage
if (test-path variable:psversiontable)
{$Version = $psversiontable.psversion}
else
{$Version = "1.0"}
# Ergebnisausgabe
write-output "Powershell-Versionsabfrage"
write-output $Version

Die PowerShell-ISE bietet eine farbliche Syntaxhervorhebung und bietet Symbolschaltflächen, um Skripte auszuführen und zu beenden. Alternativ stehen im Menü Datei gesonderte Befehle zum Ausführen von Skripten bereit. Optional markieren Sie auch Skriptbereiche und führen Sie über den Befehl Datei/Auswahl ausführen aus.

© PC Magazin
image.jpg
4

I ntellisense und Co.: Der Editor der PowerGUI bietet Autovervollständigen und leistungsfähige Snippet-Funktionen.

Tipp 5: Alternative Scripting-Umgebung

Mit dem kostenfreien Programm PowerGUI erhalten Sie eine leistungsfähigere Scripting-Umgebung, die optimierte Funktionen für die Quelltexteingabe bietet.


Neben der kostenfreien PowerShell-ISE erhalten Sie im Internet auch kostenfreie oder kommerzielle Alternativen, wie die PowerGUI von Quest (https://powergui.org/downloads.jspa ). Diese bieten erweiterte Funktionalitäten und gegebenenfalls auch erweiterte CmdLets an. Die PowerGUI ist eine leistungsfähige Aministrationskonsole, die auf der PowerShell basiert. Sie legt Informationen offen und erlaubt es, Informationen in Dateien der Formate HTML, CSV oder auch XML zu exportieren.

Über den Befehl Instrumente/Starte Skript Editor rufen Sie im Verwaltungsprogramm den integrierten Skript-Editor auf. Dieser bietet gegenüber der PowerShell-ISE erweiterte Funktionalitäten, wie Funktionen zum Autovervollständigen, zur Anbindung und Verwaltung von SnapIns/Modulen, zur Überwachung von Variablen und Variablenwerten sowie zur Codeschnippselverwaltung. Ferner unterstützt Sie der PowerGUI-Editor bei der Auswahl von PowerShell-Befehlen, die älteren VBScript-Befehlen entsprechen.

Um bekannte VBScript-Befehle in PowerShell-Skripten einzusetzen, rufen Sie in der erweiterten IDE an der gewünschten Einfügeposition des Editors den Kontextmenübefehl VBScript Snippet einfügen und anschließend den gewünschten VBScript-Befehl wie Abs, DateSerial oder For per Listenfeld ab. Der ausgesuchte Befehl oder das Konstrukt wird daraufhin in das aktuelle Skript eingefügt. Berücksichtigen Sie in den eingefügten Befehlen die Kommentare, die gegebenenfalls auf nachzuinstallierende Zusatzkomponenten verweisen oder weiterführende Informationen verwenden.

© PC Magazin
image.jpg
5

Die PowerShell-Hilfe: Detailinformationen zu CmdLets und deren Syntax.

Tipp 6: PowerShell-Hilfen abrufen

Hilfsfunktionen zu PowerShell-Befehlserweiterungen rufen Sie über die ISE oder an der PowerShell-Eingabeaufforderung ab.


Befehlserweiterungen werden über Powershell-SnapIns (PSSnapIns) verfügbar gemacht. Diese Erweiterungen werden mit Visual Basic .NET oder C# entwickelt und per Assembly-DLL bereitgestellt. Jedes PSSnapIn kann CmdLets definieren. Jedes CmdLet (command-let) legt einen Befehl offen, der sich aus der Syntax wie get-help zusammensetzt.

Die Powershell 1.0 bietet 129, Version 2.0 bereits 236 CmdLets. Eine Übersicht dazu erhalten Sie mit dem Start der PowerShell-ISE über Start/Alle Programme/Zubehör/Windows PowerShell ISE und dem Menübefehl Hilfe/Windows PowerShell-Hilfe ab. Im Hilfedialog erhalten Sie im Strukturzweig Hilfe zu PowerShell\Windows PowerShell-Hilfethemen Informationen zur Syntax von Skripten, zu Kontrollstrukturen wie about-If, zu Schlüsselwörtern (about_Language_Keywords), zu Funktionen (about_Functions) oder zu Variablen (about_Variables). Eine Liste der Befehlserweiterungen (CmdLets) steht im Hierarchiezweig Hilfe zu PowerShell\Windows PowerShell-cmdLet-Hilfethemen des Hilfedialogs.

© PC Magazin
7 nützliche Tipps und Tricks zu Microsoft Office
6

Tipps zum Arbeiten mit Powershell

Tipp 7: CmdLet-Befehle ausführen

Nachdem Sie die Syntax zu einem CmdLet-Befehl ermittelt haben, nutzen Sie den Befehl in Skripten, in der ISE oder direkt an der Eingabeaufforderung.

Über CmdLets legen Sie nicht nur Informationen offen, sondern führen allgemeine Verwaltungsaufgaben lokal oder im Netzwerk durch. CmdLets mit dem Verb Get legen Systeminformationen offen. So steht mit Get-Date eine Befehlserweiterung für die Abfrage von Datumsinformationen bereit. Die allgemeine Syntax lautet:

Get-Date [-Format <string>] [[-Datum]<DateTime>] [-Day
<int>] [-DisplayHint {<Date> | <Time> | <DateTime>}]
[-Hour <int>] [-Minute <int>] [-Month <int>] [-Second
<int>] [-Year <int>] [<CommonParameters>]

Um das aktuelle Datum samt Uhrzeit zu ermitteln, geben Sie an der PowerShell-Eingabeaufforderung den Befehl Get-Date ein. Die Angabe der Optionalparameter ist hier nicht zwingend erforderlich. Als Ergebnis erhalten Sie:

PS C:\Users\Andreas> Get-Date
Dienstag, 25. Mai 2010 09:07:43

Wollen Sie lediglich das Datum ohne Uhrzeit abfragen, dann verwenden Sie beispielsweise den folgenden Befehl Get-Date -displayhint date. Einzelne Befehle stellen mitunter auch untergeordnete Methoden bereit. Wollen Sie beispielsweise das Datum und die Uhrzeit zu einem aktuellen Datum ermitteln, das in sechs Tagen gültig ist, dann verwenden Sie die Anweisung (Get-Date).AddDays(6).

Ergebnisse von Befehlen können Sie in Variablen sichern und wie im folgenden Skript gezeigt an der PowerShell-Eingabeaufforderung ausgeben. Das Beispiel speichert das Ergebnis des Befehls get-date in der Variablen $Datum und zeigt es über write-output an:

# Skript zur Datumsabfrage und Ausgabe
$Datum = Get-Date -displayhint date
write-output $Datum

© PC Magazin
image.jpg
7

CmdLet-Hilfe: Hilfeanforderung an der PowerShell-Eingabeanforderung.

Tipp 8: Hilfe an der Eingabeaufforderung
Informationen zu bekannten CmdLets rufen Sie auch gezielt an der Eingabeaufforderung ab.


Um Informationen zu CmdLets an der Eingabeaufforderung der Powershell abzufragen, steht ein gesondertes CmdLet bereit, das den Namen get-help trägt. Die Nutzung des Befehls wird beschrieben, indem Sie an der PowerShell den Befehl get-help eingeben. Um eine Liste der verfügbaren CmdLets abzurufen, nutzen Sie den Befehl get-help *. Der folgende Parameter sorgt für eine seitenweise Ausgabe an der PowerShell get-help * | more.

Benötigen Sie zu einem bestimmten CmdLet weiterführende Informationen und Angaben zur Aufrufsyntax, geben Sie das CmdLet namentlich bei der Hilfeanforderung mit an. Die allgemeine Syntax lautet get-help <cmdlet-name> -detailed. Um Detailinformationen zum CmdLet get-date abzurufen, befehlen Sie get-help get-date -detailed. Die PowerShell bietet eine große Auswahl an Befehlserweiterungen an. Wie Sie diese gezielt - auch im Verbund sowie im Netzwerk - nutzen und wie Sie diese um eigene Befehlserweiterungen ergänzen sowie mit Funktionen und Modulen arbeiten, wäre Aufgabe weiterer Artikel.

© PC Magazin