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ärrstyrning 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 cmdlets omfattar:
- Starta om datorn
- Test-Anslutning
- 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ärrstyrning
Med hjälp av WS-Management-protokollet gör Windows PowerShell-fjärrkommunikation det möjligt att 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. För mer information, se Om fjärrstyrning.
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 cmdletarna Enter-PSSession
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 anslutning
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 valfritt kommando 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 den lokala och den fjärranslutna änden.
- 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.
För mer information om WSMan-leverantören, se WSMan Provider och About WS-Management Cmdlets, eller skriv Get-Help WSMan
i Windows PowerShell-konsolen.
Mer information finns i:
- Vanliga frågor och svar om PowerShell-fjärrkommunikation
- Register-PSSessionConfiguration
- Import-PSSession
För hjälp med fjärrkommunikationsfel, se about_Remote_Troubleshooting.