about_Remote

Kort beskrivning

Beskriver hur du kör fjärrkommandon i PowerShell.

Lång beskrivning

Du kan köra fjärrkommandon på en eller flera fjärrdatorer med hjälp av en tillfällig eller beständig anslutning. Du kan också starta en interaktiv session med en enda fjärrdator.

Kommentar

Om du vill använda PowerShell-fjärrkommunikation måste du konfigurera lokala datorer och fjärrdatorer för fjärrkommunikation. Mer information finns i about_Remote_Requirements.

Starta en interaktiv session

Det enklaste sättet att köra fjärrkommandon är att starta en interaktiv session med en fjärrdator.

När sessionen startar körs de kommandon som du skriver på fjärrdatorn, som om du skrev dem direkt på fjärrdatorn. Du kan bara ansluta till en dator i varje interaktiv session.

Om du vill starta en interaktiv session använder du cmdleten Enter-PSSession . Följande kommando startar en interaktiv session med Server01-datorn:

Enter-PSSession Server01

PowerShell ändrar kommandotolken så att namnet på fjärrdatorn inkluderas.

Server01\PS>

Nu kan du skriva kommandon på Server01-datorn.

Om du vill avsluta den interaktiva sessionen skriver du:

Exit-PSSession

Mer information finns i Enter-PSSession.

Så här använder du cmdletar som har en ComputerName-parameter

Flera cmdletar har en ComputerName-parameter som gör att du kan hämta objekt från fjärrdatorer.

Eftersom dessa cmdletar inte använder WS-Management-baserad PowerShell-fjärrkommunikation kan du använda parametern ComputerName för dessa cmdletar på alla datorer som kör PowerShell. Datorerna behöver inte konfigureras för PowerShell-fjärrkommunikation och datorerna behöver inte uppfylla systemkraven för fjärrkommunikation.

Följande cmdletar har en Parameter för ComputerName:

Clear-EventLog    Limit-EventLog
Get-Counter       New-EventLog
Get-EventLog      Remove-EventLog
Get-HotFix        Restart-Computer
Get-Process       Show-EventLog
Get-Service       Stop-Computer
Get-WinEvent      Test-Connection
Get-WmiObject     Write-EventLog

Följande kommando hämtar till exempel tjänsterna på server01-fjärrdatorn:

Get-Service -ComputerName Server01

Vanligtvis har cmdletar som stöder fjärrkommunikation utan särskild konfiguration en ComputerName-parameter och har ingen sessionsparameter . Om du vill hitta dessa cmdletar i sessionen skriver du:

Get-Command | Where-Object {
  $_.Parameters.Keys -contains 'ComputerName' -and
  $_.Parameters.Keys -notcontains 'Session'
}

Så här kör du ett fjärrkommando

Om du vill köra andra kommandon på fjärrdatorer använder du cmdleten Invoke-Command .

Om du vill köra ett enda kommando eller några icke-relaterade kommandon använder du parametern Invoke-Command ComputerName för för att ange fjärrdatorerna. Använd parametern ScriptBlock för att ange kommandot.

Följande kommando kör till exempel ett Get-Culture kommando på Server01-datorn.

Invoke-Command -ComputerName Server01 -ScriptBlock {Get-Culture}

Så här skapar du en beständig anslutning

När du använder parametern ComputerName för cmdleten Invoke-Command upprättar PowerShell en tillfällig anslutning till fjärrdatorn. Den stänger anslutningen när kommandot är klart. Alla variabler eller funktioner som definierats i den här tillfälliga sessionen går förlorade.

Om du vill skapa en beständig anslutning till en fjärrdator använder du cmdleten New-PSSession . Följande kommando skapar till exempel PSSessioner på Server01- och Server02-datorerna och sparar sedan PSSessions i variabeln $s .

$s = New-PSSession -ComputerName Server01, Server02

Så här kör du kommandon i en PSSession

Med en PSSession kan du köra en serie fjärrkommandon som delar data, till exempel funktioner, alias och variablernas värden. Om du vill köra kommandon i en PSSession använder du parametern Session för cmdleten Invoke-Command .

Följande kommando använder till exempel cmdleten Invoke-Command för att köra ett Get-Process kommando i PSSessions på Server01- och Server02-datorerna. Kommandot sparar processerna i en $p variabel i varje PSSession.

Invoke-Command -Session $s -ScriptBlock {$p = Get-Process}

Eftersom PSSession använder en beständig anslutning kan du köra ett annat kommando i samma PSSession som använder variabeln $p . Följande kommando räknar antalet processer som sparats i $p.

Invoke-Command -Session $s -ScriptBlock {$p.count}

Så här kör du ett fjärrkommando på flera datorer

Om du vill köra ett fjärrkommando på flera datorer skriver du alla datornamn i värdet för parametern ComputerName för Invoke-Command. Avgränsa namnen med kommatecken.

Följande kommando kör till exempel ett Get-Culture kommando på tre datorer:

Invoke-Command -ComputerName S1, S2, S3 -ScriptBlock {Get-Culture}

Du kan också köra ett kommando i flera PSSessioner. Följande kommandon skapar PSSessioner på datorerna Server01, Server02 och Server03 och kör sedan ett kommando i var och en Get-Culture av PSSessionerna.

$s = New-PSSession -ComputerName S1, S2, S3
Invoke-Command -Session $s -ScriptBlock {Get-Culture}

Om du vill inkludera listan över lokala datorer skriver du namnet på den lokala datorn, skriver en punkt (.) eller skriver localhost.

Invoke-Command -ComputerName S1, S2, S3, localhost -ScriptBlock {Get-Culture}

Så här kör du ett skript på fjärrdatorer

Om du vill köra ett lokalt skript på fjärrdatorer använder du parametern FilePath för Invoke-Command. Du behöver inte kopiera några filer. Följande kommando kör till exempel skriptet Sample.ps1 på S1- och S2-datorerna:

Invoke-Command -ComputerName S1, S2 -FilePath C:\Test\Sample.ps1

PowerShell returnerar resultatet av skriptet till den lokala datorn.

Så här stoppar du ett fjärrkommando

Tryck på Ctrl+c om du vill avbryta ett kommando. PowerShell skickar begäran om avbrott till fjärrdatorn där fjärrkommandot avslutas.

Mer information

Se även