Dela via


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:

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 WSMani Windows PowerShell-konsolen.

Mer information finns i:

För hjälp med fjärrkommunikationsfel, se about_Remote_Troubleshooting.

Se även