Lesezeit
4 Minuten
Seite 2 - Einführung in die PowerShell (1)
Daten abfragen
Mit Get-Cmdlets lassen Sie sich Informationen zu Objekten anzeigen. Diese fallen in der Exchange-Verwaltungsshell wesentlich umfangreicher aus als in der Exchange-Verwaltungskonsole. Mit der Option "|fl" formatieren Sie dabei die Ausgabe. Auch hier sehen Sie, wie viele Informationen die Verwaltungsshell zur Verfügung stellt. Wünschen Sie nicht alle Informationen, sondern nur einzelne Parameter, können Sie diese nach der Option "|fl" anordnen. Um etwa für das Postfach "thomas.joos@contoso.int" nur den Displaynamen, die Datenbank, den Alias und die Organisationseinheit (Organizational Unit, OU) anzuzeigen, verwenden Sie den Befehl
Sie können in der PowerShell auch alle Exchange-Datenbanken ausgeben lassen, die auf den Servern Ihrer Organisation angelegt wurden. Rufen Sie dazu in der Exchange-Verwaltungsshell den Befehl Get-MailboxDatabase auf. Sie erhalten mit diesem Befehl nicht nur eine formatierte Liste aller Postfachdatenbanken eines Servers, sondern alle Postfachdatenbanken auf allen Exchange-Servern in der Organisation. Auch hier gilt wieder, dass diese Befehle für alle Get-Cmdlets gelten.
Skripte in der PowerShell erstellen
Sie haben natürlich die Möglichkeit, einzelne PowerShell-Befehle in Skripte mit der Endung "PS1" zusammenzufassen. Um ein Skript auszuführen, verwenden Sie den Befehl mit der Syntax .\[Pfad und Name der PS1-Datei]. Vergessen Sie zu Beginn das Präfix ".\" nicht. Sie müssen für die Ausführung ferner die Sicherheitseinstellungen der PowerShell anpassen.
In der PowerShell 4.0 ist die so genannte Ausführungsrichtlinie für Skripte jetzt standardmäßig auf "RemoteSigned" gesetzt. Die Ausführungsrichtlinie bestimmt, ob Skripte ausgeführt werden dürfen und ob diese digital signiert sein müssen. Standardmäßig blockierte die PowerShell 3.0 Skripte. In Version 4.0 sind die Skripte erlaubt. Sie können die Ausführungsrichtlinie mit dem Cmdlet Set-ExecutionPolicy änder n und mit Get-ExecutionPolicy anzeigen. Dabei stehen folgende Einstellungen zur Verfügung:

Bild 3: In der grafischen Oberfläche der PowerShell sehen Sie die verfügbaren Cmdlets alphabetisch aufgelistet.
Im oberen Bereich können Sie Skriptbefehle angeben und diese dann als Skript abspeichern. Des Weiteren haben Sie die Möglichkeit, die PowerShell remote auf einem anderen Computer zu öffnen. Verwenden Sie dazu den Menüpunkt "Datei". Die PowerShell zeigt das ISE als zusätzliche Registerkarte an. Geben Sie im oberen Bereich Befehle ein, werden diese nicht sofort ausgeführt, sondern wie in einem normalen Skript zunächst aufgelistet. Sind Sie fertig mit der Eingabe der Befehle, starten Sie deren Ausführung, indem Sie auf das grüne Abspielsymbol mit der QuickInfo "Skript ausführen" klicken.
Über den Menüpunkt "Ansicht" passen Sie die verschiedenen Bereiche des ISE an Ihre Bedürfnisse an. So lässt sich zum Beispiel der Bereich zum Erstellen von Skripten an der rechten Seite anordnen. Skripte können Sie während der Ausführung bearbeiten und so Fehler schneller beheben. Laden Sie ein Skript über "Datei / Öffnen", sehen Sie im Befehlsfenster dessen Bestandteile. Markieren Sie eine Zeile im Skript, können Sie über den Menüpunkt "Debuggen / Haltepunkt umschalten" eine Pause im Skript einbauen.
Variablen in der PowerShell verwenden
Innerhalb der Shell können Sie Variablen definieren, die aktuelle Informationen automatisch abfragen. Diese Variablen lassen sich dann später innerhalb eines Skripts verwenden. Möchten Sie beispielsweise das aktuelle Datum als Variable namens "$heute" hinterlegen, geben Sie in der Shell den Befehl $heute = Get-Date ein. Anschließend wird das heutige Datum in der Variablen hinterlegt. Geben Sie dann in der Shell $heute ein, wird das aktuelle Datum ausgegeben.
Auf einzelne Bestandteile der Variable können Sie auch getrennt zugreifen. Interessiert Sie etwa aus dem Datum lediglich die Uhrzeit, lesen Sie ohne viel Aufwand mit $heute.ToShortTimeString() nur die Uhrzeit in Stunden und Minuten aus der Variablen aus. Eine weitere Möglichkeit ist das Formatieren der Ausgabe. So erzwingen Sie per Eingabe des Befehls $heute.ToString("MMMM") die Ausgabe des Monats oder über $heute.ToString ("MM")den Monat als Zahl innerhalb des Kalenderjahres. Generell können Sie hinter den meisten Befehlen, die einen Status oder eine Statistik ausgeben, noch den Zusatz "|fl" eingeben. Diese bewirkt, dass Sie eine formatierte Liste erhalten, die deutlich mehr Informationen ausgibt, als der Befehl ohne diesen Zusatz.
Im Beispiel des Datums ist es jedoch auch möglich, einzelne Bestandteile ohne Variable auszulesen. Der Befehl Get-Date -displayhint date zeigt nur das Datum, Get-Date -displayhint time nur die Uhrzeit an. Auch können Sie ermitteln, welche Art von Objekt von einem bestimmten Cmdlet abgerufen wird, indem Sie die Ergebnisse des Befehls Get mit einem Pipelineoperator (|) an den Befehl Get-Member übergeben.
Seite 1: Erste Schritte mit der PowerShell
Seite 2: Skripte erstellen und Variablen nutzen
Ab dem 11. Juli veröffentlichen wir jeweils am Montag die weiteren Folgen dieser Workshop-Serie. Im zweiten Teil des Workshops beschäftigen wir uns damit, wie Sie die PowerShell über das Netzwerk nutzen und die System-Administration über Cmdlets vornehmen. Im dritten Teil gehen wir dann darauf ein, wie Sie virtuelle und physische Festplatten verwalten und Serverrollen und Features administrieren. Und im vierten Teil geht es dann darum, was es mit der Desired State Configuration und PowerShell-eigenen Laufwerken auf sich hat.
Mit Get-Cmdlets lassen Sie sich Informationen zu Objekten anzeigen. Diese fallen in der Exchange-Verwaltungsshell wesentlich umfangreicher aus als in der Exchange-Verwaltungskonsole. Mit der Option "|fl" formatieren Sie dabei die Ausgabe. Auch hier sehen Sie, wie viele Informationen die Verwaltungsshell zur Verfügung stellt. Wünschen Sie nicht alle Informationen, sondern nur einzelne Parameter, können Sie diese nach der Option "|fl" anordnen. Um etwa für das Postfach "thomas.joos@contoso.int" nur den Displaynamen, die Datenbank, den Alias und die Organisationseinheit (Organizational Unit, OU) anzuzeigen, verwenden Sie den Befehl
Get-Mailbox thomas.joos@contoso.int |fl DisplayName, Database, Alias, OrganizationalUnitAuf diese Weise lassen Sie Informationen zu allen Objekten ausgeben, die mit GetCmdlets aufrufbar sind und dank "|fl" filtern Sie die Angaben.
Sie können in der PowerShell auch alle Exchange-Datenbanken ausgeben lassen, die auf den Servern Ihrer Organisation angelegt wurden. Rufen Sie dazu in der Exchange-Verwaltungsshell den Befehl Get-MailboxDatabase auf. Sie erhalten mit diesem Befehl nicht nur eine formatierte Liste aller Postfachdatenbanken eines Servers, sondern alle Postfachdatenbanken auf allen Exchange-Servern in der Organisation. Auch hier gilt wieder, dass diese Befehle für alle Get-Cmdlets gelten.
Über den Befehl Dismount-Database heben Sie in Exchange 2013 die Bereitstellung einer Datenbank über die PowerShell wieder auf. Sie müssen dazu lediglich den Namen der Datenbank mitgeben, damit die Exchange-Verwaltungsshell weiß, von welcher Datenbank die Bereitstellung aufgehoben werden soll. Sie können so zum Beispiel den Befehl Dismount-Database (Get-MailboxDatabase) eingeben. In diesem Fall verwendet das Cmdlet Dismount-Database die Informationen, die das Cmdlet Get-MailboxDatabase ausgibt.
Geben Sie den Namen einer Datenbank direkt mit dem Befehl ein, müssen Sie Anführungszeichen verwenden. Das gilt für alle Objekte, in denen Leerzeichen vorkommen. Alternativ rufen Sie nur den Befehl Dismount-Database auf und geben dann den Namen ein, den Sie vorher mit Get-MailboxDatabase abgefragt haben. Das funktioniert ebenfalls in den meisten Cmdlets. Drücken Sie die Taste "Pfeil nach oben" auf der Tastatur, erscheint der eingegebene Befehl noch einmal. Schließlich verwenden Sie nach der Nutzung von Dismount-Database den Befehl Mount-Database, damit die Datenbank wieder bereitgestellt wird.

Bild 2: Über Get-Mailbox erhalten Sie mehr Informationen zu vorhandenen Postfächern.
Eine weitere Möglichkeit der ExchangeVerwaltungsshell besteht im Auslesen der Postfächer innerhalb einer Postfachspeicherdatenbank. Geben Sie den Befehl Get-Mailbox ein, erhalten Sie eine Liste aller Postfächer der Organisation. Sie sehen dabei auch, auf welchem Server die einzelnen Postfächer liegen und ob ein Grenzwert eingetragen ist, der das Senden verbietet. Über den Befehl Get-Mailbox | Format-Table DisplayName, Database lassen Sie sich die Postfächer sortiert nach Postfachdatenbank und Anzeigenamen ausgeben.
Geben Sie den Namen einer Datenbank direkt mit dem Befehl ein, müssen Sie Anführungszeichen verwenden. Das gilt für alle Objekte, in denen Leerzeichen vorkommen. Alternativ rufen Sie nur den Befehl Dismount-Database auf und geben dann den Namen ein, den Sie vorher mit Get-MailboxDatabase abgefragt haben. Das funktioniert ebenfalls in den meisten Cmdlets. Drücken Sie die Taste "Pfeil nach oben" auf der Tastatur, erscheint der eingegebene Befehl noch einmal. Schließlich verwenden Sie nach der Nutzung von Dismount-Database den Befehl Mount-Database, damit die Datenbank wieder bereitgestellt wird.

Bild 2: Über Get-Mailbox erhalten Sie mehr Informationen zu vorhandenen Postfächern.
Eine weitere Möglichkeit der ExchangeVerwaltungsshell besteht im Auslesen der Postfächer innerhalb einer Postfachspeicherdatenbank. Geben Sie den Befehl Get-Mailbox ein, erhalten Sie eine Liste aller Postfächer der Organisation. Sie sehen dabei auch, auf welchem Server die einzelnen Postfächer liegen und ob ein Grenzwert eingetragen ist, der das Senden verbietet. Über den Befehl Get-Mailbox | Format-Table DisplayName, Database lassen Sie sich die Postfächer sortiert nach Postfachdatenbank und Anzeigenamen ausgeben.
Skripte in der PowerShell erstellen
Sie haben natürlich die Möglichkeit, einzelne PowerShell-Befehle in Skripte mit der Endung "PS1" zusammenzufassen. Um ein Skript auszuführen, verwenden Sie den Befehl mit der Syntax .\[Pfad und Name der PS1-Datei]. Vergessen Sie zu Beginn das Präfix ".\" nicht. Sie müssen für die Ausführung ferner die Sicherheitseinstellungen der PowerShell anpassen.
In der PowerShell 4.0 ist die so genannte Ausführungsrichtlinie für Skripte jetzt standardmäßig auf "RemoteSigned" gesetzt. Die Ausführungsrichtlinie bestimmt, ob Skripte ausgeführt werden dürfen und ob diese digital signiert sein müssen. Standardmäßig blockierte die PowerShell 3.0 Skripte. In Version 4.0 sind die Skripte erlaubt. Sie können die Ausführungsrichtlinie mit dem Cmdlet Set-ExecutionPolicy änder n und mit Get-ExecutionPolicy anzeigen. Dabei stehen folgende Einstellungen zur Verfügung:
- Restricted: Keine Skripte erlaubt.
- AllSigned: Nur signierte Skripte erlaubt.
- RemoteSigned: Bei dieser Einstellung müssen Sie Skripte durch eine Zertifizierungsstelle signieren lassen.
- Unrestricted: Mit dieser Einstellung funktionieren alle Skripte.

Bild 3: In der grafischen Oberfläche der PowerShell sehen Sie die verfügbaren Cmdlets alphabetisch aufgelistet.
Im oberen Bereich können Sie Skriptbefehle angeben und diese dann als Skript abspeichern. Des Weiteren haben Sie die Möglichkeit, die PowerShell remote auf einem anderen Computer zu öffnen. Verwenden Sie dazu den Menüpunkt "Datei". Die PowerShell zeigt das ISE als zusätzliche Registerkarte an. Geben Sie im oberen Bereich Befehle ein, werden diese nicht sofort ausgeführt, sondern wie in einem normalen Skript zunächst aufgelistet. Sind Sie fertig mit der Eingabe der Befehle, starten Sie deren Ausführung, indem Sie auf das grüne Abspielsymbol mit der QuickInfo "Skript ausführen" klicken.
Über den Menüpunkt "Ansicht" passen Sie die verschiedenen Bereiche des ISE an Ihre Bedürfnisse an. So lässt sich zum Beispiel der Bereich zum Erstellen von Skripten an der rechten Seite anordnen. Skripte können Sie während der Ausführung bearbeiten und so Fehler schneller beheben. Laden Sie ein Skript über "Datei / Öffnen", sehen Sie im Befehlsfenster dessen Bestandteile. Markieren Sie eine Zeile im Skript, können Sie über den Menüpunkt "Debuggen / Haltepunkt umschalten" eine Pause im Skript einbauen.
Variablen in der PowerShell verwenden
Innerhalb der Shell können Sie Variablen definieren, die aktuelle Informationen automatisch abfragen. Diese Variablen lassen sich dann später innerhalb eines Skripts verwenden. Möchten Sie beispielsweise das aktuelle Datum als Variable namens "$heute" hinterlegen, geben Sie in der Shell den Befehl $heute = Get-Date ein. Anschließend wird das heutige Datum in der Variablen hinterlegt. Geben Sie dann in der Shell $heute ein, wird das aktuelle Datum ausgegeben.
Auf einzelne Bestandteile der Variable können Sie auch getrennt zugreifen. Interessiert Sie etwa aus dem Datum lediglich die Uhrzeit, lesen Sie ohne viel Aufwand mit $heute.ToShortTimeString() nur die Uhrzeit in Stunden und Minuten aus der Variablen aus. Eine weitere Möglichkeit ist das Formatieren der Ausgabe. So erzwingen Sie per Eingabe des Befehls $heute.ToString("MMMM") die Ausgabe des Monats oder über $heute.ToString ("MM")den Monat als Zahl innerhalb des Kalenderjahres. Generell können Sie hinter den meisten Befehlen, die einen Status oder eine Statistik ausgeben, noch den Zusatz "|fl" eingeben. Diese bewirkt, dass Sie eine formatierte Liste erhalten, die deutlich mehr Informationen ausgibt, als der Befehl ohne diesen Zusatz.
Im Beispiel des Datums ist es jedoch auch möglich, einzelne Bestandteile ohne Variable auszulesen. Der Befehl Get-Date -displayhint date zeigt nur das Datum, Get-Date -displayhint time nur die Uhrzeit an. Auch können Sie ermitteln, welche Art von Objekt von einem bestimmten Cmdlet abgerufen wird, indem Sie die Ergebnisse des Befehls Get mit einem Pipelineoperator (|) an den Befehl Get-Member übergeben.
Seite 1: Erste Schritte mit der PowerShell
Seite 2: Skripte erstellen und Variablen nutzen
Ab dem 11. Juli veröffentlichen wir jeweils am Montag die weiteren Folgen dieser Workshop-Serie. Im zweiten Teil des Workshops beschäftigen wir uns damit, wie Sie die PowerShell über das Netzwerk nutzen und die System-Administration über Cmdlets vornehmen. Im dritten Teil gehen wir dann darauf ein, wie Sie virtuelle und physische Festplatten verwalten und Serverrollen und Features administrieren. Und im vierten Teil geht es dann darum, was es mit der Desired State Configuration und PowerShell-eigenen Laufwerken auf sich hat.
| << Vorherige Seite | Seite 2 von 2 |