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:

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:

Mer information om fjärrkommunikationsfel finns i about_Remote_Troubleshooting.

Se även