Kör fjärrkommandon
Du kan köra kommandon på en eller hundratals datorer med ett enda PowerShell-kommando. Windows PowerShell stöder fjärrbaserad databehandling med hjälp av olika tekniker, inklusive WMI, RPC och WS-Management.
PowerShell stöder WMI-, WS-Management- och SSH-fjärrkommunikation. I PowerShell 7 och senare stöds RPC endast i Windows.
Mer information om fjärrkommunikation i PowerShell finns i följande artiklar:
Windows PowerShell-fjärrkommunikation utan konfiguration
Många Windows PowerShell-cmdletar har parametern ComputerName som gör att du kan samla in data och ändra inställningar på en eller flera fjärrdatorer. Dessa cmdletar använder olika kommunikationsprotokoll och fungerar på alla Windows-operativsystem utan någon särskild konfiguration.
Dessa cmdletar omfattar:
- Starta om datorn
- Test-Anslut ion
- Clear-EventLog
- Get-EventLog
- Get-HotFix
- Get-Process
- Get-Service
- Set-Service
- Get-WinEvent
- Get-WmiObject
Vanligtvis har cmdletar som stöder fjärrkommunikation utan särskild konfiguration parametern ComputerName och har inte parametern Session . Om du vill hitta dessa cmdletar i sessionen skriver du:
Get-Command | Where-Object {
$_.Parameters.Keys -contains "ComputerName" -and
$_.Parameters.Keys -notcontains "Session"
}
Windows PowerShell-fjärrkommunikation
Med WS-Management-protokollet kan du med Windows PowerShell-fjärrkommunikation köra alla Windows PowerShell-kommandon på en eller flera fjärrdatorer. Du kan upprätta beständiga anslutningar, starta interaktiva sessioner och köra skript på fjärrdatorer.
Om du vill använda Windows PowerShell-fjärrkommunikation måste fjärrdatorn konfigureras för fjärrhantering. Mer information, inklusive instruktioner, finns i Om fjärrkrav.
När du har konfigurerat Windows PowerShell-fjärrkommunikation är många strategier för fjärrkommunikation tillgängliga för dig. Den här artikeln innehåller bara några få av dem. Mer information finns i Om fjärranslutning.
Starta en interaktiv session
Om du vill starta en interaktiv session med en enda fjärrdator använder du cmdleten Enter-PSSession . Om du till exempel vill starta en interaktiv session med server01-fjärrdatorn skriver du:
Enter-PSSession Server01
Kommandotolken ändras för att visa namnet på fjärrdatorn. Alla kommandon som du skriver i kommandotolken körs på fjärrdatorn och resultaten visas på den lokala datorn.
Om du vill avsluta den interaktiva sessionen skriver du:
Exit-PSSession
Mer information om Enter-PSSession
cmdletarna och Exit-PSSession
finns i:
Kör ett fjärrkommando
Om du vill köra ett kommando på en eller flera datorer använder du cmdleten Invoke-Command . Om du till exempel vill köra ett Get-UICulture-kommando på fjärrdatorerna Server01 och Server02 skriver du:
Invoke-Command -ComputerName Server01, Server02 -ScriptBlock {Get-UICulture}
Utdata returneras till datorn.
LCID Name DisplayName PSComputerName
---- ---- ----------- --------------
1033 en-US English (United States) server01.corp.fabrikam.com
1033 en-US English (United States) server02.corp.fabrikam.com
Köra ett skript
Om du vill köra ett skript på en eller flera fjärrdatorer använder du parametern FilePath för cmdleten Invoke-Command
. Skriptet måste vara på eller tillgängligt för den lokala datorn. Resultatet returneras till den lokala datorn.
Följande kommando kör till exempel skriptet DiskCollect.ps1
på fjärrdatorerna Server01 och Server02.
Invoke-Command -ComputerName Server01, Server02 -FilePath c:\Scripts\DiskCollect.ps1
Upprätta en beständig Anslut ion
Använd cmdleten New-PSSession
för att skapa en beständig session på en fjärrdator. I följande exempel skapas fjärrsessioner på Server01 och Server02. Sessionsobjekten lagras i variabeln $s
.
$s = New-PSSession -ComputerName Server01, Server02
Nu när sessionerna har upprättats kan du köra alla kommandon i dem. Och eftersom sessionerna är beständiga kan du samla in data från ett kommando och använda dem i ett annat kommando.
Följande kommando kör till exempel ett Get-HotFix
kommando i sessionerna i variabeln $s
och sparar resultatet i variabeln $h
. Variabeln $h
skapas i var och en av sessionerna i $s
, men den finns inte i den lokala sessionen.
Invoke-Command -Session $s {$h = Get-HotFix}
Nu kan du använda data i variabeln $h
med andra kommandon i samma session. Resultatet visas på den lokala datorn. Till exempel:
Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NT AUTHORITY\SYSTEM"}}
Avancerad fjärrkommunikation
PowerShell innehåller cmdletar som gör att du kan:
- Konfigurera och skapa fjärrsessioner både från lokala och fjärranslutna
- Skapa anpassade och begränsade sessioner
- Importera kommandon från en fjärrsession som faktiskt körs implicit i fjärrsessionen
- Konfigurera säkerheten för en fjärrsession
PowerShell i Windows innehåller en WSMan-provider. Providern skapar en WSMAN:
enhet som gör att du kan navigera genom en hierarki med konfigurationsinställningar på den lokala datorn och fjärrdatorerna.
Mer information om WSMan-providern finns i WSMan-providern och Om WS-Management-cmdletar, eller i Windows PowerShell-konsolen skriver du Get-Help wsman
.
Mer information finns i:
- Vanliga frågor och svar om PowerShell-fjärrkommunikation
- Register-PSSessionConfiguration
- Import-PSSession
Mer information om fjärrkommunikationsfel finns i about_Remote_Troubleshooting.