Delen via


Externe opdrachten uitvoeren

U kunt opdrachten uitvoeren op één of honderden computers met één PowerShell-opdracht. Windows PowerShell ondersteunt externe computing met behulp van verschillende technologieën, waaronder WMI, RPC en WS-Management.

PowerShell biedt ondersteuning voor WMI, WS-Management en externe SSH-communicatie. In PowerShell 7 en hoger wordt RPC alleen ondersteund in Windows.

Zie de volgende artikelen voor meer informatie over externe communicatie in PowerShell:

Externe communicatie met Windows PowerShell zonder configuratie

Veel Windows PowerShell-cmdlets hebben de parameter ComputerName waarmee u gegevens kunt verzamelen en instellingen kunt wijzigen op een of meer externe computers. Deze cmdlets gebruiken verschillende communicatieprotocollen en werken op alle Windows-besturingssystemen zonder speciale configuratie.

Deze cmdlets zijn onder andere:

Cmdlets die externe communicatie ondersteunen zonder speciale configuratie, hebben doorgaans de parameter ComputerName en hebben niet de 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"
}

Externe communicatie met Windows PowerShell

Met behulp van het WS-Management-protocol kunt u met externe communicatie van Windows PowerShell elke Windows PowerShell-opdracht uitvoeren op een of meer externe computers. U kunt permanente verbindingen tot stand brengen, interactieve sessies starten en scripts uitvoeren op externe computers.

Als u externe communicatie met Windows PowerShell wilt gebruiken, moet de externe computer worden geconfigureerd voor extern beheer. Zie Over externe vereisten voor meer informatie, inclusief instructies.

Zodra u externe communicatie met Windows PowerShell hebt geconfigureerd, zijn er veel strategieën voor externe communicatie beschikbaar voor u. In dit artikel worden slechts enkele van deze artikelen vermeld. Zie About Remote voor meer informatie.

Een interactieve sessie starten

Als u een interactieve sessie wilt starten met één externe computer, gebruikt u de cmdlet Enter-PSSession . Als u bijvoorbeeld een interactieve sessie wilt starten met de externe Server01-computer, typt u:

Enter-PSSession Server01

De opdrachtprompt verandert om de naam van de externe computer weer te geven. Opdrachten die u bij de prompt typt, worden uitgevoerd op de externe computer en de resultaten worden weergegeven op de lokale computer.

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

Exit-PSSession

Zie voor meer informatie over de Enter-PSSession en Exit-PSSession cmdlets:

Een externe opdracht uitvoeren

Als u een opdracht wilt uitvoeren op een of meer computers, gebruikt u de cmdlet Invoke-Command . Als u bijvoorbeeld een Get-UICulture-opdracht wilt uitvoeren op de externe computers server01 en Server02, typt u:

Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-UICulture}

De uitvoer wordt geretourneerd naar uw computer.

LCID    Name     DisplayName               PSComputerName
----    ----     -----------               --------------
1033    en-US    English (United States)   server01.corp.fabrikam.com
1033    en-US    English (United States)   server02.corp.fabrikam.com

Een script uitvoeren

Als u een script wilt uitvoeren op een of veel externe computers, gebruikt u de parameter FilePath van de Invoke-Command cmdlet. Het script moet zijn ingeschakeld of toegankelijk zijn voor uw lokale computer. De resultaten worden geretourneerd naar uw lokale computer.

Met de volgende opdracht wordt bijvoorbeeld het DiskCollect.ps1 script uitgevoerd op de externe computers, Server01 en Server02.

Invoke-Command -ComputerName Server01, Server02 -FilePath c:\Scripts\DiskCollect.ps1

Een permanente Verbinding maken ie tot stand brengen

Gebruik de New-PSSession cmdlet om een permanente sessie op een externe computer te maken. In het volgende voorbeeld worden externe sessies gemaakt op Server01 en Server02. De sessieobjecten worden opgeslagen in de $s variabele.

$s = New-PSSession -ComputerName Server01, Server02

Nu de sessies tot stand zijn gebracht, kunt u elke opdracht erin uitvoeren. En omdat de sessies permanent zijn, kunt u gegevens van de ene opdracht verzamelen en gebruiken in een andere opdracht.

Met de volgende opdracht wordt bijvoorbeeld een Get-HotFix opdracht uitgevoerd in de sessies in de $s variabele en worden de resultaten in de $h variabele opgeslagen. De $h variabele wordt gemaakt in elk van de sessies in $s, maar deze bestaat niet in de lokale sessie.

Invoke-Command -Session $s {$h = Get-HotFix}

U kunt nu de gegevens in de $h variabele gebruiken met andere opdrachten in dezelfde sessie. De resultaten worden weergegeven op de lokale computer. Voorbeeld:

Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NT AUTHORITY\SYSTEM"}}

Geavanceerde externe toegang

PowerShell bevat cmdlets waarmee u het volgende kunt doen:

  • Externe sessies configureren en maken vanaf de lokale en externe uiteinden
  • Aangepaste en beperkte sessies maken
  • Opdrachten importeren vanuit een externe sessie die impliciet worden uitgevoerd op de externe sessie
  • De beveiliging van een externe sessie configureren

PowerShell in Windows bevat een WSMan-provider. De provider maakt een WSMAN: station waarmee u door een hiërarchie van configuratie-instellingen op de lokale computer en externe computers kunt navigeren.

Zie WSMan-provider en Over WS-management-cmdlets of typ in de Windows PowerShell-console Get-Help wsmanvoor meer informatie over de WSMan-provider.

Zie voor meer informatie:

Zie about_Remote_Troubleshooting voor hulp bij externe fouten.

Zie ook