In herkömmlichen Shellumgebungen wird das Format der Ausgabe vom jeweiligen Tool oder Befehl bestimmt. Bei einigen Tools kann die Ausgabe angepasst und über spezielle Parameter gesteuert werden.
In Windows PowerShell werden Ausgaben grundsätzlich mit den Format-Cmdlets formatiert:
-
Format-List
-
Format-Custom
-
Format-Table
-
Format-Wide
Die anderen Cmdlets formatieren Ausgaben nicht selbst. Daher müssen Sie nicht Formatierungsverfahren und -parameter für mehrere Tools lernen. Sie müssen sich nur mit den Format-Cmdlets und deren Parametern vertraut machen.
Beim Ausführen eines Befehls ruft Windows PowerShell abhängig vom Typ der angezeigten Daten das zugehörige Standardformatierungsprogramm auf. Das Formatierungsprogramm legt fest, welche Eigenschaften der Ausgabedaten angezeigt werden, und ob die Ausgabe als Liste oder Tabelle erfolgt.
So erfolgt z. B. beim Cmdlet "Get-Service" die Ausgabe standardmäßig als Tabelle mit drei Spalten, wie im Folgenden gezeigt:
C:\PS> get-service Status Name DisplayName ------ ---- ----------- Running AdtAgent Event Forwarder Stopped Alerter Alerter Running ALG Application Layer Gateway Service
Wenn Sie die Ausgaben eines beliebigen Cmdlets anders formatieren möchten, senden Sie die Befehlsausgabe mit dem Pipelineoperator (|) an ein Format-Cmdlet.
So wird z. B. mit dem folgenden Befehl die Ausgabe des Befehls "Get-Service" an das Cmdlet "Format-List" gesendet. Dadurch werden die Dienstdaten als Liste für jeden Dienst formatiert.
C:\PS> get-service | format-list Name : AdtAgent DisplayName : Event Forwarder Status : Running DependentServices : {} ServicesDependedOn : {eventlog, dnscache} CanPauseAndContinue : False CanShutdown : True CanStop : True ServiceType : Win32OwnProcess Name : Alerter DisplayName : Alerter Status : Stopped DependentServices : {} ServicesDependedOn : {LanmanWorkstation} CanPauseAndContinue : False CanShutdown : False CanStop : False ServiceType : Win32ShareProcess Name : ALG DisplayName : Application Layer Gateway Service Status : Running DependentServices : {}
In diesem Format werden die Daten nicht nur statt als Tabelle als Liste angezeigt, sondern es sind auch mehr Informationen zu jedem Dienst verfügbar. Statt drei Datenspalten pro Dienst sind nun neun Datenzeilen vorhanden. Die zusätzlichen Dienstinformationen wurden von Format-List nicht abgerufen. Die Daten waren bereits zuvor in den von Get-Service abgerufenen Objekten verfügbar, wurden jedoch vom Standardformatierungsprogramm Format-Table nicht angezeigt, da der Bildschirm nur Platz für drei Spalten bietet.
Sie können nicht nur festlegen, ob die Daten als Liste oder Tabelle ausgegeben werden, sondern auch, welche Eigenschaften des Objekts angezeigt werden. So werden z. B. in der Standardausgabe von Get-Service nur die Eigenschaften Status, Name und DisplayName des Dienstobjekts angezeigt.
Wenn alle Eigenschaften eines Objekts angezeigt werden sollen, senden Sie die Ergebnisse eines Befehls mit einem Pipelineoperator (|) an das Cmdlet "Get-Member". Wenn Sie beispielsweise alle Eigenschaften eines Dienstobjekts anzeigen möchten, geben Sie Folgendes ein:
get-service | get-member -membertype *property TypeName: System.ServiceProcess.ServiceController Name MemberType Definition ---- ---------- ---------- Name AliasProperty Name = ServiceName CanPauseAndContinue Property System.Boolean CanPauseAndContinue {get;} CanShutdown Property System.Boolean CanShutdown {get;} CanStop Property System.Boolean CanStop {get;} Container Property System.ComponentModel.IContainer Container {get;} DependentServices Property System.ServiceProcess.ServiceController[] DependentServices {get;} DisplayName Property System.String DisplayName {get;set;} MachineName Property System.String MachineName {get;set;} ServiceHandle Property System.Runtime.InteropServices.SafeHandle ServiceHandle {get;} ServiceName Property System.String ServiceName {get;set;} ServicesDependedOn Property System.ServiceProcess.ServiceController[] ServicesDependedOn {get;} ServiceType Property System.ServiceProcess.ServiceType ServiceType {get;} Site Property System.ComponentModel.ISite Site {get;set;} Status Property System.ServiceProcess.ServiceControllerStatus Status {get;}
Da alle diese Eigenschaften in dem Objekt enthalten sind, das Get-Service für die einzelnen Dienste abruft, können Sie beliebige oder alle Eigenschaften anzeigen. Mit dem Property-Parameter des Format-Cmdlets können Sie die anzuzeigenden Eigenschaften und die Anzeigereihenfolge festlegen. So werden beispielsweise im folgenden Befehl mit dem Befehl Format-Table nur die Eigenschaften Name, ServiceType und CanShutDown des Diensts angezeigt.
get-service | format-table name, Servicetype, Canshutdown
Dies ist nur ein kleiner Ausschnitt der Möglichkeiten, die für die Anzeige von Ausgabedaten in Windows PowerShell zur Verfügung stehen. Weitere Informationen zu den Format-Cmdlets erhalten Sie mit folgenden Befehlen:
get-help format-list get-help format-table get-help format-wide get-help format-custom