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. RPC stöds inte längre i PowerShell 6. 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-Connection
- 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 { $_.parameters.keys -contains "ComputerName" -and $_.parameters.keys -notcontains "Session"}
Windows PowerShell fjärrkommunikation
Med WS-Management-protokollet kan du Windows PowerShell fjärrkommunikation köra valfritt Windows PowerShell kommando 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 fjärrkommunikationsstrategier 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.
Avsluta den interaktiva sessionen genom att skriva:
Exit-PSSession
Mer information om cmdletarna Enter-PSSession och Exit-PSSession finns i:
Köra 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 kommandot Get-UICulture 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 alla kommandon i dem. 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. Exempel:
Invoke-Command -Session $s {$h | where {$_.InstalledBy -ne "NT AUTHORITY\SYSTEM"}}
Avancerad fjärrkommunikation
Windows PowerShell fjärrhantering börjar just här. Med hjälp av de cmdletar som är installerade med Windows PowerShell kan du upprätta och konfigurera fjärrsessioner både från lokala och fjärranslutna ändar, skapa anpassade och begränsade sessioner, tillåta användare att importera kommandon från en fjärrsession som faktiskt körs implicit på fjärrsessionen, konfigurera säkerheten för en fjärrsession och mycket mer.
Windows PowerShell 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
- Registrera PSSessionConfiguration
- Import-PSSession
Mer information om fjärrkommunikationsfel finns i about_Remote_Troubleshooting.