Arbeiten mit Ausgaben von Befehlen

 

Gilt für: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007

Letztes Änderungsdatum des Themas: 2006-08-21

Die Exchange-Verwaltungsshell bietet verschiedene Methoden zum Formatieren der Befehlsausgabe. In diesem Thema werden die folgenden Punkte behandelt:

  • Formatieren von Daten   Hier wird erläutert, wie die angezeigten Daten mit den Cmdlets Format-List, Format-Table und Format-Wide formatiert werden können.

  • Datenausgabe   Hier wird erläutert, wie mit den Cmdlets Out-Host und Out-File festgelegt wird, ob die Daten an das Konsolenfenster der Exchange-Verwaltungsshell oder an eine Datei ausgegeben werden. Dieser Abschnitt enthält auch ein Beispielskript für die Ausgabe von Daten an Microsoft Internet Explorer.

  • Filtern von Daten   Hier wird erläutert, wie Daten mit einer der folgenden Filtermethoden gefiltert werden:

    • Serverseitige Filterung, verfügbar bei bestimmten Cmdlets

    • Clientseitige Filterung, verfügbar bei allen Cmdlets, indem die Ergebnisse eines Befehls mittels Pipeline an das Cmdlet Where-Object gesendet werden

Wenn Sie die in diesem Thema beschriebene Funktionalität nutzen möchten, müssen Sie mit den folgenden Konzepten vertraut sein:

Formatieren von Daten

Wenn Sie Cmdlets für die Formatierung am Ende der Pipeline aufrufen, kann die Standardformatierung außer Kraft gesetzt werden, um zu steuern, welche Daten angezeigt und wie die Daten dargestellt werden. Die Cmdlets für die Formatierung lauten Format-List, Format-Table und Format-Wide. Jedes Cmdlet weist einen eigenen Ausgabestil auf, der sich von dem der anderen Cmdlets für die Formatierung unterscheidet.

Format-List

Das Cmdlet Format-List akzeptiert Eingabe von der Pipeline und gibt eine Liste mit vertikalen Spalten aus, die alle angegebenen Eigenschaften jedes Objekts enthält. Mit dem Parameter Property kann festgelegt werden, welche Eigenschaften angezeigt werden. Wenn das Cmdlet Format-List ohne Parameter aufgerufen wird, werden alle Eigenschaften ausgegeben. Bei Verwendung des Cmdlets Format-List werden Zeilen nicht abgeschnitten sondern umbrochen. Eine der besten Einsatzmöglichkeiten für das Cmdlet Format-List besteht im Außerkraftsetzen der Standardausgabe eines Cmdlets, sodass weitere oder wesentlichere Informationen abgerufen werden können.

Beispiel: Wenn Sie das Cmdlet Get-Mailbox aufrufen, werden nur im begrenzten Umfang Informationen im Tabellenformat angezeigt. Wenn Sie die Ausgabe des Cmdlets Get-Mailbox mittels Pipeline an das Cmdlet Format-List übergeben und Parameter für die benötigten zusätzlichen oder wesentlicheren Informationen hinzufügen, können Sie die gewünschte Ausgabe abrufen.

Darüber hinaus kann auch ein Platzhalterzeichen (*) mit einem Teil eines Eigenschaftennamens angegeben werden. Bei Angabe eines Platzhalterzeichens können mehrere Eigenschaften zugeordnet werden, ohne dass die Eigenschaften einzeln eingegeben werden müssen. Beispiel: Get-Mailbox | Format-List -Property Email* gibt alle Eigenschaften zurück, die mit Email beginnen.

Die folgenden Beispiele zeigen, wie dieselben von dem Cmdlet Get-Mailbox zurückgegebenen Daten auf unterschiedliche Weise angezeigt werden können.

Get-MailBox TestUser1

Name                      Alias                Server           StorageQuota
----                      -----                ------           ------------
TestUser1                  TestUser1             e12           unlimited

Im ersten Beispiel wird das Cmdlet Get-Mailbox ohne spezielle Formatierung aufgerufen, sodass die Standardausgabe im Tabellenformat erfolgt und einen vordefinierten Satz von Eigenschaften enthält.

Get-Mailbox TestUser1 | Format-List -Property Name,Alias,EmailAddresses

Name           : TestUser1
Alias          : TestUser1
EmailAddresses : {SMTP:TestUser1@contoso.com, X400:c=US;a= ;p=Contoso;o=Exchange;s=TestUser1;}
Get-Mailbox TestUser1 | Format-List -Property Name, Alias, Email*

Im zweiten Beispiel wird die Ausgabe des Cmdlets Get-Mailbox zusammen mit bestimmten Eigenschaften mittels Pipeline an das Cmdlet Format-List übergeben. Format und Inhalt der Ausgabe sind bei diesem Beispiel völlig anders.

Name                      : Test User
Alias                     : TestUser1
EmailAddresses            : {SMTP:TestUser1@contoso.com, X400:c=US;a= ;p=First
                            Organization;o=Exchange;s=User;g=Test;}
EmailAddressPolicyEnabled : True

Im letzten Beispiel wird die Ausgabe des Cmdlets Get-Mailbox wie im zweiten Beispiel mittels Pipeline an das Cmdlet Format-List übergeben. Bei dem letzten Beispiel wird jedoch ein Platzhalterzeichen verwendet, um alle Eigenschaften zuzuordnen, die mit Email beginnen.

Wenn mehrere Objekte an das Cmdlet Format-List übergeben werden, werden alle für ein Objekt angegebenen Eigenschaften nach Objekt gruppiert und angezeigt. Die Anzeigereihenfolge richtet sich nach dem Standardparameter für das Cmdlet. Dies ist meistens der Parameter Name oder Identity. Beispiel: Wenn das Cmdlet Get-Childitem aufgerufen wird, werden die Dateinamen in der Standardanzeige in alphabetischer Reihenfolge angezeigt. Um dieses Verhalten zu ändern, muss das Cmdlet Format-List zusammen mit dem Parameter GroupBy und einem Eigenschaftenwert, nach dem die Ausgabe gruppiert werden soll, aufgerufen werden. Mit dem folgenden Befehl zum Beispiel werden alle Dateien in einem Verzeichnis aufgelistet und nach ihrer Dateierweiterung gruppiert.

Get-Childitem | Format-List Name,Length -GroupBy Extension

    Extension: .xml

Name   : Config_01.xml
Length : 5627

Name   : Config_02.xml
Length : 3901


    Extension: .bmp

Name   : Image_01.bmp
Length : 746550

Name   : Image_02.bmp
Length : 746550


    Extension: .txt

Name   : Text_01.txt
Length : 16822

Name   : Text_02.txt
Length : 9835

In diesem Beispiel hat das Cmdlet Format-List die Elemente nach der Eigenschaft Extension gruppiert, die von dem Parameter GroupBy angegeben wird. Der Parameter GroupBy kann mit jeder gültigen Eigenschaft für die Objekte in dem Pipelinestream verwendet werden.

Format-Table

Das Cmdlet Format-Table ermöglicht die Darstellung von Elementen im Tabellenformat, wobei die Tabelle Spaltenüberschriften und Spalten mit Eigenschaftendaten enthält. Viele Cmdlets wie beispielsweise Get-Process und Get-Service verwenden standardmäßig das Tabellenformat für die Ausgabe. Zu den Parametern für das Cmdlet Format-Table zählen Properties und GroupBy. Ihre Funktionsweise ist mit diesem Cmdlet dieselbe wie mit dem Cmdlet Format-List.

In Verbindung mit dem Cmdlet Format-Table wird auch der Parameter Wrap verwendet. Dieser ermöglicht die Anzeige von Eigenschafteninformationen in langen Zeilen, d. h. die Information wird nicht am Ende einer Zeile abgeschnitten. Sie können feststellen, wie der Parameter Wrap zur Darstellung zurückgegebener Informationen verwendet wird, wenn Sie die Ausgabe des Befehls Get-Command in den folgenden beiden Beispielen vergleichen.

Im ersten Beispiel werden bei Verwendung des Cmdlets Get-Command zum Anzeigen der Befehlsinformationen über das Cmdlet Get-Process die Informationen für die Eigenschaft Definition abgeschnitten.

Get-Command Get-Process | Format-Table Name,Definition

Name                                    Definition
----                                    ----------
get-process                             get-process [[-ProcessName] String[]...

Im zweiten Beispiel wird dem Befehl der Parameter Wrap hinzugefügt, um die Anzeige des vollständigen Inhalts der Eigenschaft Definition zu erzwingen.

Get-Command Get-Process | Format-Table Name,Definition -Wrap

Name                                    Definition
----                                    ----------
get-process                             get-process [[-ProcessName] String[]] [
                                        -Verbose] [-Debug] [-ErrorAction Action
                                        Preference] [-ErrorVariable String] [-O
                                        utVariable String] [-OutBuffer Int32]
                                        get-process -Id Int32[] [-Verbose] [-De
                                        bug] [-ErrorAction ActionPreference] [-
                                        ErrorVariable String] [-OutVariable Str
                                        ing] [-OutBuffer Int32]
                                        get-process -Input Process[] [-Verbose]
                                         [-Debug] [-ErrorAction ActionPreferenc
                                        e] [-ErrorVariable String] [-OutVariabl
                                        e String] [-OutBuffer Int32] 

Wie bei dem Cmdlet Format-List können Sie auch hier ein Platzhalterzeichen (*) zusammen mit einem Teil eines Eigenschaftennamens angeben. Durch Angabe eines Platzhalterzeichens können mehrere Eigenschaften zugeordnet werden, ohne dass die Eigenschaften einzeln eingegeben werden müssen.

Format-Wide

Das Cmdlet Format-Wide ermöglicht eine wesentlich einfachere Ausgabesteuerung als die übrigen Format-Cmdlets. Standardmäßig versucht das Cmdlet Format-Wide so viele Spalten mit Eigenschaftenwerten wie möglich in einer Ausgabezeile anzuzeigen. Durch Hinzufügen von Parametern können Sie die Anzahl der Spalten festlegen und steuern, wie der Ausgabebereich verwendet wird.

Wird das Cmdlet Format-Wide in der Standardverwendungsmöglichkeit ganz ohne Parameter aufgerufen, wird die Ausgabe in so vielen Spalten angeordnet, wie auf die Seite passen. Beispiel: Wenn das Cmdlet Get-Childitem ausgeführt und dessen Ausgabe mittels Pipeline an das Cmdlet Format-Wide übergeben wird, werden die Informationen wie folgt dargestellt:

Get-ChildItem | Format-Wide

    Directory: FileSystem::C:\WorkingFolder

Config_01.xml                           Config_02.xml
Config_03.xml                           Config_04.xml
Config_05.xml                           Config_06.xml
Config_07.xml                           Config_08.xml
Config_09.xml                           Image_01.bmp
Image_02.bmp                            Image_03.bmp
Image_04.bmp                            Image_05.bmp
Image_06.bmp                            Text_01.txt
Text_02.txt                             Text_03.txt
Text_04.txt                             Text_05.txt
Text_06.txt                             Text_07.txt
Text_08.txt                             Text_09.txt
Text_10.txt                             Text_11.txt
Text_12.txt

Im Allgemeinen werden bei Aufruf des Cmdlets Get-Childitem ohne Parameter die Namen aller Dateien in dem Verzeichnis in einer Tabelle mit Eigenschaften angezeigt. Da in diesem Beispiel die Ausgabe des Cmdlets Get-Childitem mittels Pipeline an das Cmdlet Format-Wide übergeben wurde, wurde die Ausgabe in zwei Spalten mit Namen angezeigt. Beachten Sie, dass zur gleichen Zeit jeweils nur ein Eigenschaftentyp angezeigt werden kann, der durch einen Eigenschaftennamen gemäß dem Cmdlet Format-Wide angegeben wurde. Durch Hinzufügen des Parameters Autosize wird die Ausgabe von zweispaltig in so viele Spalten geändert, wie die Bildschirmbreite zulässt.

Get-ChildItem | Format-Wide -AutoSize

    Directory: FileSystem::C:\WorkingFolder

Config_01.xml   Config_02.xml   Config_03.xml   Config_04.xml   Config_05.xml
Config_06.xml   Config_07.xml   Config_08.xml   Config_09.xml   Image_01.bmp
Image_02.bmp    Image_03.bmp    Image_04.bmp    Image_05.bmp    Image_06.bmp
Text_01.txt     Text_02.txt     Text_03.txt     Text_04.txt     Text_05.txt
Text_06.txt     Text_07.txt     Text_08.txt     Text_09.txt     Text_10.txt
Text_11.txt     Text_12.txt

In diesem Beispiel enthält die Tabelle nicht zwei sondern fünf Spalten. Der Parameter Column bietet weitergehende Steuermöglichkeiten. Mit diesem Parameter können Sie die maximale Spaltenanzahl für die Anzeige von Informationen angeben.

Get-ChildItem | Format-Wide -Columns 4

    Directory: FileSystem::C:\WorkingFolder

Config_01.xml       Config_02.xml       Config_03.xml       Config_04.xml
Config_05.xml       Config_06.xml       Config_07.xml       Config_08.xml
Config_09.xml       Image_01.bmp        Image_02.bmp        Image_03.bmp
Image_04.bmp        Image_05.bmp        Image_06.bmp        Text_01.txt
Text_02.txt         Text_03.txt         Text_04.txt         Text_05.txt
Text_06.txt         Text_07.txt         Text_08.txt         Text_09.txt
Text_10.txt         Text_11.txt         Text_12.txt

In diesem Beispiel wurde die vierspaltige Ansicht durch den Parameter Column erzwungen.

Datenausgabe

"Out-Host" und "Out-File"

Bei dem Cmdlet Out-Host handelt es sich um ein nicht angezeigtes Standard-Cmdlet am Ende der Pipeline. Nachdem sämtliche Formatierungen angewendet wurden, sendet das Cmdlet Out-Host die finale Ausgabe zur Anzeige an das Konsolenfenster. Das Cmdlet Out-Host muss nicht explizit aufgerufen werden, da es sich hierbei um die Standardausgabe handelt. Das Senden der Ausgabe an das Konsolenfenster kann außer Kraft gesetzt werden, indem das Cmdlet Out-Host als letztes Cmdlet in dem Befehl aufgerufen wird. Das Cmdlet Out-File schreibt dann die Ausgabe in die Datei, die in dem Befehl angegeben wurde (siehe folgendes Beispiel):

Get-ChildItem | Format-Wide -Columns 4 | Out-File c:\OutputFile.txt

In diesem Beispiel schreibt das Cmdlet Out-Host die in dem Befehl Get-ChildItem | Format-Wide -Columns 4 angezeigten Informationen in eine Datei mit der Bezeichnung OutputFile.txt. Die Ausgabe einer Pipeline kann auch mit dem Umleitungsoperator, der spitzen Klammer rechts (>), in eine Datei umgeleitet werden. Um die Pipelineausgabe eines Befehls an eine vorhandene Datei anzufügen, ohne die Originaldatei zu ersetzen, verwenden Sie die doppelten spitzen Klammern rechts (>>), wie im folgenden Beispiel dargestellt:

Get-ChildItem | Format-Wide -Columns 4 >> C:\OutputFile.txt

In diesem Beispiel wird die Ausgabe des Cmdlets Get-Childitem mittels Pipeline zur Formatierung an das Cmdlet Format-Wide übergeben und dann an das Ende der Datei OutputFile.txt geschrieben. Wenn die Datei OutputFile.txt nicht vorhanden ist, wird sie durch Verwendung doppelter spitzer Klammern rechts (>>) erstellt.

Weitere Informationen zu Pipelines finden Sie unter Pipelining.

Weitere Informationen zu der in den obigen Beispielen verwendeten Syntax finden Sie unter Syntax.

Anzeigen von Daten in Internet Explorer

Aufgrund der Flexibilität und Unkompliziertheit von Skripts in der Exchange-Verwaltungsshell können die von Befehlen zurückgegebenen Daten auf beinahe unbegrenzte Weise formatiert und ausgegeben werden.

Das folgende Beispiel zeigt, wie die von einem Befehl zurückgegebenen Daten mithilfe eines einfachen Skripts ausgegeben und in Internet Explorer angezeigt werden können. Dieses Skript verwendet die über die Pipeline übergebenen Objekte, öffnet ein Internet Explorer-Fenster und zeigt die Daten anschließend in Internet Explorer an:

$Ie = New-Object -Com InternetExplorer.Application
$Ie.Navigate("about:blank")
While ($Ie.Busy) { Sleep 1 }
$Ie.Visible = $True
$Ie.Document.Write("$Input")
# If the previous line doesn't work on your system, uncomment the line below.
# $Ie.Document.IHtmlDocument2_Write(\"$Input\")
$Ie

Um das Skript zu verwenden, speichern Sie es auf dem Computer, auf dem es ausgeführt werden soll, im Verzeichnis C:\Program Files\Microsoft\Exchange Server\Scripts. Legen Sie für die Datei den Namen Out-Ie.ps1 fest. Nachdem die Datei gespeichert wurde, kann das Skript als reguläres Cmdlet verwendet werden.

Für das Skript Out-Ie wird davon ausgegangen, dass es sich bei den erhaltenen Daten um gültige HTML-Daten handelt. Um die anzuzeigenden Daten in das HTML-Format umzuwandeln, müssen die Ergebnisse des Befehls mittels Pipeline an das Cmdlet ConvertTo-Html übergeben werden. Die Ergebnisse des Befehls können dann über eine Pipeline an das Skript Out-Ie übergeben werden. Das folgende Beispiel zeigt, wie eine Verzeichnisauflistung in einem Internet Explorer-Fenster angezeigt wird:

Get-ChildItem | Select Name,Length | ConvertTo-Html | Out-Ie

Filtern von Daten

Die Exchange-Verwaltungsshell bietet Zugriff auf umfangreiche Informationen über Ihre Server, Postfächer, den Active Directory-Verzeichnisdienst und weitere Objekte in der Organisation. Obwohl Ihnen der Zugang zu diesen Informationen dabei hilft, die Umgebung besser zu verstehen, kann Sie die große Menge an Information auch leicht überfordern. Mithilfe der Exchange-Verwaltungsshell können Sie steuern, welche Informationen zurückgegeben werden. Filter bieten Ihnen die Möglichkeit, nur die gewünschten Informationen anzuzeigen. Die folgenden beiden Filterungsarten stehen zur Verfügung:

  • Serverseitige Filterung   Bei der serverseitigen Filterung wird der gewünschte Filter in der Befehlszeile eingegeben und an den Exchange-Server übergeben, der abgefragt wird. Der Server verarbeitet die Abfrage und gibt nur die Daten zurück, die dem angegebenen Filter entsprechen.

    Die serverseitige Filterung wird nur bei Objekten ausgeführt, bei denen möglicherweise Zehn- oder Hunderttausende von Ergebnissen zurückgegeben werden. Daher unterstützen nur die Cmdlets für die Empfängerverwaltung, wie zum Beispiel das Cmdlet Get-Mailbox, und Cmdlets für die Warteschlangenverwaltung, wie zum Beispiel das Cmdlet Get-Queue, die serverseitige Filterung. Diese Cmdlets unterstützen den Parameter Filter. Dieser akzeptiert den von Ihnen angegebenen Filterausdruck und übergibt ihn zur Verarbeitung an den Server.

  • Clientseitige Filterung   Die clientseitige Filterung wird in dem lokalen Konsolenfenster, in dem Sie zurzeit arbeiten, an den Objekten durchgeführt. Bei der clientseitigen Filterung ruft das Cmdlet alle Objekte ab, die der Aufgabe entsprechen, die Sie in dem lokalen Konsolenfenster durchführen. Die Exchange-Verwaltungsshell übernimmt anschließend alle zurückgegebenen Ergebnisse, wendet den clientseitigen Filter auf diese Ergebnisse an und gibt nur die Ergebnisse zurück, die dem Filter entsprechen. Alle Cmdlets unterstützen die clientseitige Filterung. Diese wird aufgerufen, indem die Ergebnisse eines Befehls mittels Pipeline an das Cmdlet Where-Object übergeben werden.

Serverseitige Filterung

Die Implementierung der serverseitigen Filterung bezieht sich speziell auf das Cmdlet, von dem sie unterstützt wird. Die serverseitige Filterung ist nur für bestimmte Eigenschaften der zurückgegebenen Objekte aktiviert.

Weitere Informationen zur Verwaltung von Empfängern mithilfe der serverseitigen Filterung finden Sie unter Erstellen von Filtern in Empfängerbefehlen.

Weitere Informationen zur Verwaltung von Warteschlangen mithilfe der serverseitigen Filterung finden Sie unter Filtern von Warteschlangen.

Clientseitige Filterung

Die clientseitige Filterung kann mit jedem beliebigen Cmdlet verwendet werden. Hierzu zählen auch die Cmdlets, die die serverseitige Filterung unterstützen. Wie bereits weiter oben erläutert, werden bei der clientseitigen Filterung alle Daten akzeptiert, die von einem früheren Befehl in der Pipeline zurückgegeben wurden, und anschließend nur die Ergebnisse zurückgegeben, die dem angegebenen Filter entsprechen. Diese Art der Filterung wird mit dem Cmdlet Where-Object durchgeführt. Es kann zu Where verkürzt werden.

Wenn Daten die Pipeline durchlaufen, empfängt das Cmdlet Where die Daten von dem vorherigen Objekt und filtert die Daten, bevor sie an das nächste Objekt übergeben werden. Der Filterung liegt ein Skriptblock zugrunde, der in dem Where-Befehl definiert ist. Der Skriptblock filtert Daten basierend auf den Eigenschaften und Werten des Objekts.

Das Cmdlet Clear-Host dient zum Löschen des Inhalts des Konsolenfensters. In diesem Beispiel werden alle definierten Aliase für das Cmdlet Clear-Host angezeigt, wenn Sie den folgenden Befehl ausführen:

Get-Alias | Where {$_.Definition -eq "Clear-Host"}

CommandType     Name                            Definition
-----------     ----                            ----------
Alias           clear                           clear-host
Alias           cls                             clear-host

Das Cmdlet Get-Alias und der Befehl Where werden zusammen verwendet, um die Liste der Aliase zurückzugeben, die nur für das Cmdlet Clear-Host definiert sind. Tabelle 1 enthält die einzelnen Elemente des in dem Beispiel verwendeten Where-Befehls.

Tabelle 1   Elemente des "Where"-Befehls

Element Beschreibung

{ }

Der Skriptblock, der den Filter definiert, wird in geschweifte Klammern eingeschlossen.

$_

Dieses spezielle Variable wird automatisch initiiert und an die Objekte in der Pipeline gebunden.

Definition

Bei der Eigenschaft Definition handelt es sich um die Eigenschaft der aktuellen Pipelineobjekte, in der der Name der Aliasdefinition gespeichert wird. Wenn Definition mit der Variablen $_ verwendet wird, steht vor dem Namen der Eigenschaft ein Punkt.

-eq

Dieser Vergleichsoperator ("gleich") wird verwendet, um anzugeben, dass die Ergebnisse genau mit dem im Ausdruck übergebenen Eigenschaftenwert übereinstimmen müssen.

"Clear-Host"

In diesem Beispiel ist "Clear-Host" der Wert, für den der Befehl die Analyse durchführt.

In dem Beispiel stellen die durch das Cmdlet Get-Alias zurückgegebenen Werte alle definierten Aliase im System dar. Die Aliase werden zwar nicht in der Befehlszeile angezeigt, sie werden aber gesammelt und über die Pipeline an das Cmdlet Where übergeben. Die Informationen in dem Skriptblock werden von dem Cmdlet Where verwendet, um einen Filter auf die Aliasobjekte anzuwenden.

Die spezielle Variable $_ stellt die Objekte dar, die übergeben werden. Die Variable $_ wird von der Shell automatisch initiiert und an das aktuelle Pipelineobjekt gebunden. Weitere Informationen zu dieser speziellen Variablen finden Sie unter Shellvariablen.

Bei Verwendung der standardmäßigen punktierten Schreibweise (Objekt.Eigenschaft) wird die Eigenschaft Definition hinzugefügt, um die genaue Eigenschaft des auszuwertenden Objekts zu definieren. Der Vergleichsoperator -eq vergleicht anschließend den Wert dieser Eigenschaft mit "Clear-Host". Nur die Objekte mit der Eigenschaft Definition, die dieses Kriterium erfüllen, werden zur Ausgabe an das Konsolenfenster übergeben. Weitere Informationen zu Vergleichsoperatoren finden Sie unter Vergleichsoperatoren.