Externe opdrachten uitvoeren
U kunt opdrachten uitvoeren op een 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 6 wordt RPC niet meer ondersteund. In PowerShell 7 en hoger wordt RPC alleen ondersteund in Windows.
Zie de volgende artikelen voor meer informatie over externe communicatie in PowerShell:
Windows PowerShell externe communicatie 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 aan alle Windows-besturingssystemen zonder speciale configuratie.
Deze cmdlets zijn onder andere:
- Restart-Computer
- Test-Connection
- Clear-EventLog
- Get-EventLog
- Get-HotFix
- Get-Process
- Get-Service
- Set-Service
- Get-WinEvent
- Get-WmiObject
Cmdlets die externe communicatie ondersteunen zonder speciale configuratie, hebben doorgaans de parameter ComputerName en hebben niet de parameter Sessie. Als u deze cmdlets in uw sessie wilt vinden, typt u:
Get-Command | where { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}
Windows PowerShell externe toegang
Met behulp van het WS-Management-protocol kunt u met Windows PowerShell externe communicatie 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 Windows PowerShell externe communicatie wilt gebruiken, moet de externe computer worden geconfigureerd voor extern beheer. Zie Over externe vereisten voor meer informatie, inclusief instructies.
Zodra u Windows PowerShell externe communicatie hebt geconfigureerd, zijn er veel externe strategieën 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 Enter-PSSession-cmdlet . Als u bijvoorbeeld een interactieve sessie wilt starten met de externe Server01-computer, typt u:
Enter-PSSession Server01
De opdrachtprompt wordt gewijzigd 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 FilePath-parameter 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 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 er elke opdracht in uitvoeren. En omdat de sessies permanent zijn, kunt u gegevens van de ene opdracht verzamelen en in een andere opdracht gebruiken.
Met de volgende opdracht wordt bijvoorbeeld een Get-HotFix opdracht uitgevoerd in de sessies in de $s variabele en worden de resultaten opgeslagen in de $h variabele. 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. Bijvoorbeeld:
Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NT AUTHORITY\SYSTEM"}}
Geavanceerde externe communicatie
Windows PowerShell extern beheer begint hier. Door de cmdlets te gebruiken die zijn geïnstalleerd met Windows PowerShell, kunt u externe sessies maken en configureren vanaf de lokale en externe uiteinden, aangepaste en beperkte sessies maken, gebruikers toestaan opdrachten te importeren vanuit een externe sessie die impliciet worden uitgevoerd op de externe sessie, de beveiliging van een externe sessie configureren en nog veel meer.
Windows PowerShell 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 voor meer informatie over de WSMan-provider WSMan Provider en About WS-Management Cmdlets, of in de Windows PowerShell-console, typt Get-Help wsmanu .
Zie voor meer informatie:
- Veelgestelde vragen over externe communicatie van PowerShell
- Register-PSSessionConfiguration
- Import-PSSession
Zie about_Remote_Troubleshooting voor hulp bij externe fouten.