Sie sind auf Seite 1von 4

THEMA

about_Remote_Output
KURZBESCHREIBUNG
Beschreibt, wie die Ausgabe von Remotebefehlen interpretiert und
formatiert wird.
DETAILBESCHREIBUNG
Die Ausgabe eines Befehls, der auf einem Remotecomputer
ausgefhrt wurde, entspricht im Wesentlichen der Ausgabe, die
derselbe Befehl auf dem lokalen Computer ausgeben wrde. Es gibt
jedoch auch einige wichtige Unterschiede.
In diesem Thema wird erklrt, wie die Ausgabe bei der Ausfhrung
von Befehlen auf Remotecomputern interpretiert, formatiert und
angezeigt werden kann.

ANZEIGEN DES COMPUTERNAMENS
Wenn Sie das Cmdlet "Invoke-Command" verwenden, um auf einem
Remotecomputer einen Befehl auszufhren, gibt der Befehl ein
Objekt zurck, das den Namen des Computers beinhaltet, der die
Daten generiert hat. Der Remotecomputername wird in der
PSComputerName-Eigenschaft gespeichert.
Bei vielen Befehlen wird PSComputerName standardmig angezeigt.
Mit dem folgenden Befehl wird z. B. auf den beiden Remotecomputern
"Server01" und "Server02" der Befehl "Get-Culture" ausgefhrt.
Die Ausgabe (siehe unten) beinhaltet den Namen des
Remotecomputers, auf dem der Befehl ausgefhrt wurde.
C:\PS> invoke-command -script {get-culture} -comp Server01,
Server02
LCID Name DisplayName PSComputerName
---- ---- ----------- --------------
1033 en-US Englisch (USA) Server01
1033 es-AR Spanisch (Argentinien) Server02

Mit dem HideComputerName-Parameter von "Invoke-Command" knnen
Sie die PSComputerName-Eigenschaft ausblenden. Dieser Parameter
ist fr Befehle vorgesehen, die von nur einem Remotecomputer
Daten erfassen.
Mit dem folgenden Befehl wird auf dem Remotecomputer "Server01"
der Befehl "Get-Culture" ausgefhrt. Dabei werden mit dem
HideComputerName-Parameter die PSComputerName-Eigenschaft und
zugehrige Eigenschaften ausgeblendet.
C:\PS> invoke-command -scr {get-culture} -comp Server01
-HideComputerName
LCID Name DisplayName
---- ---- -----------
1033 en-US Englisch (USA)
Sie knnen die Anzeige der PSComputerName-Eigenschaft manuell
festlegen, wenn die Eigenschaft nicht standardmig angezeigt wird.
Bei den folgenden Befehlen wird mit dem Cmdlet "Format-Table"
die PSComputerName-Eigenschaft zur Ausgabe eines remote
ausgefhrten Befehls "Get-Date" hinzugefgt.
C:\PS> $dates = invoke-command -script {get-date} -computername Server01
, Server02
C:\PS> $dates | format-table DateTime, PSComputerName -auto
DateTime PSComputerName
-------- --------------
Montag, 21. Juli 2008, 19:16:58 Server01
Montag, 21. Juli 2008, 19:16:58 Server02
ANZEIGEN DER MACHINENAME-EIGENSCHAFT
Mehrere Cmdlets, einschlielich "Get-Process", "Get-Service" und
"Get-EventLog", verfgen ber einen ComputerName-Parameter, der
die Objekte auf einem Remotecomputer abruft.
Diese Cmdlets verwenden kein Windows PowerShell-Remoting, und Sie
knnen sie deshalb auch auf Computern verwenden, die nicht fr
Remoting in Windows PowerShell konfiguriert sind.
Die Objekte, die diese Cmdlets zurckgeben, speichern den Namen
des Remotecomputers in der MachineName-Eigenschaft. (Diese
Objekte verfgen nicht ber eine PSComputerName-Eigenschaft.)
Mit dem folgenden Befehl wird der PowerShell-Prozess auf den
Remotecomputern "Server01" und "Server02" abgerufen. Die
Standardanzeige beinhaltet keine Anzeige der MachineName-Eigenschaft.
C:\PS> get-process powershell -computername server01, server02
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
920 38 97524 114504 575 9.66 2648 powershell
194 6 24256 32384 142 3020 powershell
352 27 63472 63520 577 3.84 4796 powershell
Sie knnen das Cmdlet "Format-Table" verwenden, um die
MachineName-Eigenschaft der Prozessobjekte anzuzeigen.
Beispielsweise werden mit dem folgenden Befehl die Prozesse in
der Variablen "$p" gespeichert und dann die Prozesse in "$p" mit
einem Pipelineoperator (|) an den Befehl "Format-Table" gesendet.
Die MachineName-Eigenschaft wird dabei mit dem Property-Parameter
von "Format-Table" zur Anzeige hinzugefgt.
C:\PS> $p = get-process powershell -comp Server01, Server02
C:\PS> $P | format-table -property ID, ProcessName,
MachineName -auto
Id ProcessName MachineName
-- ----------- -----------
2648 powershell Server02
3020 powershell Server01
4796 powershell Server02

Im folgenden komplexeren Befehl wird die MachineName-Eigenschaft
zur Standardanzeige des Prozesses hinzugefgt. Es werden
Hashtabellen verwendet, um berechnete Eigenschaften fr die
Anzeige anzugeben. Glcklicherweise brauchen Sie den Befehl nicht
zu verstehen, um ihn verwenden zu knnen.
(Das Graviszeichen [`] ist das Zeilenfortsetzungszeichen.)

C:\PS> $p = get-process powershell -comp Server01, Server02
C:\PS> $p | format-table -property Handles, `
@{Label="NPM(K)";Expression={[int]($_.NPM/1024)}}, `
@{Label="PM(K)";Expression={[int]($_.PM/1024)}}, `
@{Label="WS(K)";Expression={[int]($_.WS/1024)}}, `
@{Label="VM(M)";Expression={[int]($_.VM/1MB)}}, `
@{Label="CPU(s)";Expression={if ($_.CPU -ne $()){ $_.CPU.ToS
tring("N")}}}, `
Id, ProcessName, MachineName -auto

Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName MachineName
------- ------ ----- ----- ----- ------ -- ----------- -----------
920 38 97560 114532 576 2648 powershell Server02
192 6 24132 32028 140 3020 powershell Server01
438 26 48436 59132 565 4796 powershell Server02
DESERIALISIERTE OBJEKTE
Wenn Sie Remotebefehle ausfhren, die eine Ausgabe generieren,
wird die Befehlsausgabe ber das Netzwerk zurck zum lokalen
Computer gesendet.
Da die meisten aktiven Microsoft .NET Framework-Objekte (z. B.
die Objekte, die Windows PowerShell-Cmdlets zurckgeben) nicht
ber das Netzwerk gesendet werden knnen, werden aktive Objekte
"serialisiert". Bei der Serialisierung werden die Liveobjekte in
XML-Darstellungen des Objekts und seiner Eigenschaften
konvertiert. Anschlieend wird das XML-basierte serialisierte
Objekt ber das Netzwerk gesendet.
Auf dem lokalen Computer empfngt Windows PowerShell das
XML-basierte serialisierte Objekt und "deserialisiert" es, indem
das Objekt in ein .NET Framework-Standardobjekt konvertiert wird.
Das deserialisierte Objekt ist jedoch kein Liveobjekt. Es handelt
sich um einen Snapshot des Objekts zu dem Zeitpunkt, zu dem es
serialisiert wurde, und es beinhaltet alle Eigenschaften, aber
keine Methoden. Sie knnen diese Objekte in Windows PowerShell
verwenden und verwalten und sie z. B. in Pipelines bergeben,
ausgewhlte Eigenschaften anzeigen oder die Objekte formatieren.
Bei den meisten deserialisierten Objekten wird automatisch eine
Anzeigeformatierung entsprechend den Eintrgen in den Dateien
"Types.ps1xml" und "Format.ps1xml" durchgefhrt. Es kann jedoch
vorkommen, dass auf dem lokalen Computer nicht alle bentigten
Formatierungsdateien fr deserialisierte Objekte vorhanden sind,
die auf einem Remotecomputer generiert wurden. Wenn Objekte nicht
formatiert werden, werden alle Eigenschaften jedes Objekts in der
Konsole als einfache Liste ausgegeben.
Wenn Objekte nicht automatisch formatiert werden, knnen Sie
Formatierung-Cmdlets verwenden, z. B. "Format-Table" oder
"Format-List", um ausgewhlte Eigenschaften zu formatieren und
anzuzeigen. Alternativ knnen Sie das Cmdlet "Out-GridView"
verwenden, um die Objekte in einer Tabelle anzuzeigen.
Wenn Sie einen Befehl auf einem Remotecomputer ausfhren, der
Cmdlets verwendet, die auf dem lokalen Computer nicht vorhanden
sind, werden die vom Befehl zurckgegebenen Objekte eventuell
nicht ordnungsgem formatiert, da die bentigten Formatierungsda-
teien fr die Objekte auf dem Computer nicht verfgbar sind. Um
die erforderlichen Formatierungsdaten von einem anderen Computer
abzurufen, verwenden Sie das Cmdlet "Get-FormatData" oder
"Export-FormatData".
Einige Objekttypen, z. B. DirectoryInfo-Objekte und GUIDs, werden
beim Empfang zurck in Liveobjekte konvertiert. Bei diesen
Objekten ist keine spezielle Behandlung oder Formatierung notwendig.
SORTIEREN DER ERGEBNISSE
Die Reihenfolge der Computernamen im ComputerName-Parameter von
Cmdlets bestimmt die Reihenfolge, in der Windows PowerShell
Verbindungen mit den Remotecomputern herstellt. Die Ergebnisse
werden in der Reihenfolge angezeigt, in der der lokale Computer
sie empfngt. Die Reihenfolge kann dabei von der Reihenfolge im
Aufruf abweichen.
Um die Reihenfolge der Ergebnisse zu ndern, verwenden Sie das
Cmdlet "Sort-Object". Sie knnen nach der PSComputerName-Eigen-
schaft oder nach der MachineName-Eigenschaft sortieren. Sie knnen
auch nach einer anderen Objekteigenschaft sortieren, sodass die
Ergebnisse von verschiedenen Computern gemischt werden.
SIEHE AUCH
about_Remote
Format-Table
Get-EventLog
Get-Process
Get-Service
Get-WmiObject
Invoke-Command
Out-GridView
Select-Object