about_Remote_Output
Korte beschrijving
Hierin wordt beschreven hoe u de uitvoer van externe opdrachten interpreteert en opmaken.
Lange beschrijving
De uitvoer van een opdracht die op een externe computer is uitgevoerd, kan eruitzien als uitvoer van dezelfde opdracht die op een lokale computer wordt uitgevoerd, maar er zijn enkele belangrijke verschillen.
In dit onderwerp wordt uitgelegd hoe u de uitvoer van opdrachten die worden uitgevoerd op externe computers interpreteert, opmaken en weergeven.
De computernaam weergeven
Wanneer u de Invoke-Command
cmdlet gebruikt om een opdracht uit te voeren op een externe computer, retourneert de opdracht een object dat de naam bevat van de computer die de gegevens heeft gegenereerd. De eigenschap PSComputerName bevat de naam van de externe computer.
Voor veel opdrachten wordt PSComputerName standaard weergegeven. Met de volgende opdracht wordt bijvoorbeeld een Get-Culture
opdracht uitgevoerd op twee externe computers, Server01 en Server02. De uitvoer, die hieronder wordt weergegeven, bevat de namen van de externe computers waarop de opdracht is uitgevoerd.
Invoke-Command -ScriptBlock {Get-Culture} -ComputerName Server01, Server02
LCID Name DisplayName PSComputerName
---- ---- ----------- --------------
1033 en-US English (United States) Server01
1033 es-AR Spanish (Argentina) Server02
U kunt de parameter Invoke-Command
HideComputerName gebruiken om de eigenschap PSComputerName te verbergen. Deze parameter is ontworpen voor opdrachten die gegevens verzamelen van slechts één externe computer.
Met de volgende opdracht wordt een Get-Culture
opdracht uitgevoerd op de externe Server01-computer. Hierbij wordt de parameter HideComputerName gebruikt om de eigenschap PSComputerName en gerelateerde eigenschappen te verbergen.
$invokeCommandSplat = @{
ScriptBlock = {Get-Culture}
ComputerName = 'Server01'
HideComputerName = $true
}
Invoke-Command @invokeCommandSplat
LCID Name DisplayName
---- ---- -----------
1033 en-US English (United States)
U kunt ook de eigenschap PSComputerName weergeven als deze niet standaard wordt weergegeven.
De volgende opdrachten gebruiken bijvoorbeeld de cmdlet om de Format-Table
eigenschap PSComputerName toe te voegen aan de uitvoer van een externe Get-Date
opdracht.
$invokeCommandSplat = @{
ScriptBlock = {Get-Date}
ComputerName = 'Server01', 'Server02'
}
Invoke-Command @invokeCommandSplat |
Format-Table DateTime, PSComputerName -AutoSize
DateTime PSComputerName
-------- --------------
Monday, July 21, 2008 7:16:58 PM Server01
Monday, July 21, 2008 7:16:58 PM Server02
Gedeserialiseerde objecten
Wanneer u externe opdrachten uitvoert die uitvoer genereren, wordt de opdrachtuitvoer via het netwerk teruggestuurd naar de lokale computer.
Omdat live .NET-objecten niet via het netwerk kunnen worden verzonden, worden de live-objecten geserialiseerd of geconverteerd naar XML-weergaven van het object en de eigenschappen ervan. PowerShell verzendt het geserialiseerde object via het netwerk.
Op de lokale computer ontvangt PowerShell het geserialiseerde object en wordt het gedeserialiseerd door het geserialiseerde object te converteren naar een standaard .NET-object.
Het gedeserialiseerde object is echter geen live object. Het is een momentopname van het object op het moment van serialisatie. Het gedeserialiseerde object bevat eigenschappen, maar geen methoden. U kunt deze objecten gebruiken en beheren in PowerShell, inclusief het doorgeven in pijplijnen, het weergeven van geselecteerde eigenschappen en het opmaken ervan.
De meeste gedeserialiseerde objecten worden automatisch opgemaakt voor weergave door vermeldingen in de Types.ps1xml
of Format.ps1xml
bestanden. De lokale computer heeft echter mogelijk geen opmaakbestanden voor alle objecten die zijn gegenereerd op een externe computer. Wanneer objecten niet zijn opgemaakt, worden alle eigenschappen van elk object weergegeven in de console in een streaminglijst.
Wanneer objecten niet automatisch worden opgemaakt, kunt u de opmaak-cmdlets, zoals Format-Table
of Format-List
, gebruiken om geselecteerde eigenschappen op te maken en weer te geven. U kunt ook de Out-GridView
cmdlet gebruiken om de objecten in een tabel weer te geven.
Wanneer u een opdracht uitvoert op een externe computer die gebruikmaakt van cmdlets die u niet op uw lokale computer hebt, worden de objecten die de opdracht retourneert mogelijk niet opgemaakt zoals verwacht als u de opmaakbestanden voor deze objecttypen op uw computer niet hebt. U gebruikt de Get-FormatData
en Export-FormatData
cmdlets om opmaakgegevens op te halen van een andere computer.
Sommige objecttypen, zoals DirectoryInfo-objecten en GUID's, worden weer geconverteerd naar live-objecten wanneer ze worden ontvangen. Deze objecten hebben geen speciale verwerking of opmaak nodig.
De resultaten ordenen
De volgorde van de computernamen in de parameter ComputerName van cmdlets bepaalt de volgorde waarin PowerShell verbinding maakt met de externe computers. De resultaten worden echter weergegeven in de volgorde waarin de gegevens van de externe computers worden ontvangen.
U kunt de Sort-Object
cmdlet gebruiken om de resultaten op de PSComputerName te sorteren. Wanneer u een andere eigenschap van het object hebt, worden de resultaten van verschillende computers door elkaar gescheiden in de uitvoer