about_Remote

Korte beschrijving

Beschrijft hoe u externe opdrachten uitvoert in PowerShell.

Lange beschrijving

U kunt externe opdrachten uitvoeren op één computer of op meerdere computers met behulp van een tijdelijke of permanente verbinding. U kunt ook een interactieve sessie starten met één externe computer.

Dit onderwerp bevat een reeks voorbeelden om u te laten zien hoe u verschillende typen externe opdrachten uitvoert. Nadat u deze basisopdrachten hebt geprobeerd, leest u de Help-onderwerpen waarin elke cmdlet wordt beschreven die in deze opdrachten wordt gebruikt. De onderwerpen bevatten de details en leggen uit hoe u de opdrachten kunt aanpassen aan uw behoeften.

Opmerking: als u externe communicatie met PowerShell wilt gebruiken, moeten de lokale en externe computers worden geconfigureerd voor externe communicatie. Zie about_Remote_Requirements voor meer informatie.

EEN INTERACTIEVE SESSIE STARTEN (ENTER-PSSESSION)

De eenvoudigste manier om externe opdrachten uit te voeren, is door een interactieve sessie te starten met een externe computer.

Wanneer de sessie wordt gestart, worden de opdrachten die u typt uitgevoerd op de externe computer, net alsof u ze rechtstreeks op de externe computer hebt getypt. U kunt slechts met één computer in elke interactieve sessie verbinding maken.

Gebruik de cmdlet Enter-PSSession om een interactieve sessie te starten. Met de volgende opdracht start u een interactieve sessie met de Server01-computer:

Enter-PSSession Server01

De opdrachtprompt wordt gewijzigd om aan te geven dat u bent verbonden met de Server01-computer.

Server01\PS>

U kunt nu opdrachten typen op de Server01-computer.

Als u de interactieve sessie wilt beëindigen, typt u:

Exit-PSSession

Zie Enter-PSSession voor meer informatie.

CMDLETS MET EEN COMPUTERNAME-PARAMETER GEBRUIKEN OM EXTERNE GEGEVENS OP TE HALEN

Verschillende cmdlets hebben een ComputerName-parameter waarmee u objecten van externe computers kunt ophalen.

Omdat deze cmdlets geen gebruik maken van externe communicatie met WS-Management van PowerShell, kunt u de parameter ComputerName van deze cmdlets gebruiken op elke computer waarop PowerShell wordt uitgevoerd. De computers hoeven niet te worden geconfigureerd voor externe communicatie met PowerShell en de computers hoeven niet te voldoen aan de systeemvereisten voor externe communicatie.

De volgende cmdlets hebben de parameter ComputerName:

Clear-EventLog    Limit-EventLog
Get-Counter       New-EventLog
Get-EventLog      Remove-EventLog
Get-HotFix        Restart-Computer
Get-Process       Show-EventLog
Get-Service       Stop-Computer
Get-WinEvent      Test-Connection
Get-WmiObject     Write-EventLog

Met de volgende opdracht worden bijvoorbeeld de services op de externe server01-computer:

Get-Service -ComputerName Server01

Cmdlets die ondersteuning bieden voor externe communicatie zonder speciale configuratie, hebben doorgaans een ComputerName-parameter en hebben geen sessieparameter . Als u deze cmdlets in uw sessie wilt vinden, typt u:

Get-Command | Where-Object {
  $_.Parameters.Keys -contains 'ComputerName' -and
  $_.Parameters.Keys -notcontains 'Session'
}

EEN EXTERNE OPDRACHT UITVOEREN

Als u andere opdrachten wilt uitvoeren op externe computers, gebruikt u de cmdlet Invoke-Command.

Als u één opdracht of een paar niet-gerelateerde opdrachten wilt uitvoeren, gebruikt u de parameter ComputerName van Invoke-Command om de externe computers op te geven. Gebruik de parameter ScriptBlock om de opdracht op te geven.

Met de volgende opdracht wordt bijvoorbeeld een Get-Culture opdracht uitgevoerd op de Server01-computer.

Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}

De parameter ComputerName is ontworpen voor situaties waarin u één opdracht of meerdere niet-gerelateerde opdrachten uitvoert op een of meer computers. Als u een permanente verbinding met een externe computer tot stand wilt brengen, gebruikt u de sessieparameter.

EEN PERMANENTE VERBINDING MAKEN (PSSESSION)

Wanneer u de parameter ComputerName van de cmdlet Invoke-Command gebruikt, maakt Windows PowerShell een verbinding alleen voor de opdracht. Vervolgens wordt de verbinding gesloten wanneer de opdracht is voltooid. Alle variabelen of functies die in de opdracht zijn gedefinieerd, gaan verloren.

Als u een permanente verbinding met een externe computer wilt maken, gebruikt u de cmdlet New-PSSession. Met de volgende opdracht maakt u bijvoorbeeld PSSessions op de Server01- en Server02-computers en slaat u vervolgens de PSSessions op in de variabele $s.

$s = New-PSSession -ComputerName Server01, Server02

OPDRACHTEN UITVOEREN IN EEN PSSESSION

Met een PSSession kunt u een reeks externe opdrachten uitvoeren waarmee gegevens worden gedeeld, zoals functies, aliassen en de waarden van variabelen. Als u opdrachten wilt uitvoeren in een PSSession, gebruikt u de sessieparameter van de cmdlet Invoke-Command.

De volgende opdracht gebruikt bijvoorbeeld de cmdlet Invoke-Command om een Get-Process opdracht uit te voeren in de PSSessions op de Server01- en Server02-computers. Met de opdracht worden de processen opgeslagen in een $p variabele in elke PSSession.

Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}

Omdat de PSSession gebruikmaakt van een permanente verbinding, kunt u een andere opdracht uitvoeren in dezelfde PSSession die gebruikmaakt van de variabele $p. Met de volgende opdracht wordt het aantal processen geteld dat is opgeslagen in $p.

Invoke-Command -Session $s -ScriptBlock {$p.count}

EEN EXTERNE OPDRACHT UITVOEREN OP MEERDERE COMPUTERS

Als u een externe opdracht op meerdere computers wilt uitvoeren, typt u alle computernamen in de waarde van de parameter ComputerName van Invoke-Command. Scheid de namen met komma's.

Met de volgende opdracht wordt bijvoorbeeld een Get-Culture opdracht uitgevoerd op drie computers:

Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture}

U kunt ook een opdracht uitvoeren in meerdere PSSessions. Met de volgende opdrachten maakt u PSSessions op de Server01-, Server02- en Server03-computers en voert u vervolgens een Get-Culture opdracht uit in elk van de PSSessions.

$s = New-PSSession -ComputerName S1, S2, S3
Invoke-Command -Session $s -ScriptBlock {Get-Culture}

Als u de lijst met lokale computers wilt opnemen, typt u de naam van de lokale computer, typt u een punt (.) of typt u 'localhost'.

Invoke-Command -ComputerName S1, S2, S3, localhost -ScriptBlock {Get-Culture}

EEN SCRIPT UITVOEREN OP EXTERNE COMPUTERS

Als u een lokaal script wilt uitvoeren op externe computers, gebruikt u de FilePath-parameter van Invoke-Command.

Met de volgende opdracht wordt bijvoorbeeld het script Sample.ps1 uitgevoerd op de computers S1 en S2:

Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1

De resultaten van het script worden geretourneerd naar de lokale computer. U hoeft geen bestanden te kopiëren.

EEN EXTERNE OPDRACHT STOPPEN

Druk op Ctrl+C om een opdracht te onderbreken. De interruptaanvraag wordt doorgegeven aan de externe computer, waar de externe opdracht wordt beëindigd.

VOOR MEER INFORMATIE

  • Zie about_Remote_Requirements voor meer informatie over de systeemvereisten voor externe communicatie.

  • Zie about_Remote_Output voor hulp bij het opmaken van externe uitvoer.

  • Zie Veelgestelde vragen over externe communicatie van PowerShell voor informatie over hoe externe communicatie werkt, het beheren van externe gegevens, speciale configuraties, beveiligingsproblemen en andere veelgestelde vragen.

  • Zie about_Remote_Troubleshooting voor hulp bij het oplossen van externe toegangsfouten.

  • Zie about_PSSessions voor informatie over PSSessions en permanente verbindingen.

  • Zie about_Jobs voor meer informatie over PowerShell-achtergrondtaken.

ZOEKWOORDEN

about_Remoting

Zie ook