about_PSSessions
Kort beskrivning
Beskriver Windows PowerShell-sessioner (PSSessioner) och förklarar hur du upprättar en beständig anslutning till en fjärrdator.
Lång beskrivning
Om du vill köra Windows PowerShell-kommandon på en fjärrdator kan du använda parametern ComputerName för en cmdlet eller skapa en Windows PowerShell-session (PSSession) och köra kommandon i PSSession.
När du skapar en PSSession upprättar Windows PowerShell en beständig anslutning till fjärrdatorn. Använd en PSSession för att köra en serie relaterade kommandon på en fjärrdator. Kommandon som körs i samma PSSession kan dela data, till exempel värden för variabler, alias och funktioner.
Du kan också skapa en PSSession på den lokala datorn och köra kommandon i den. En lokal PSSession använder Windows PowerShell-fjärrkommunikationsinfrastrukturen för att skapa och underhålla PSSession.
Från och med Windows PowerShell 3.0 är PSSessioner oberoende av de sessioner där de skapas. Aktiva PSSessioner underhålls på fjärrdatorn (eller datorn i fjärrsluten eller "serversidan" för anslutningen). Därför kan du koppla från PSSession och återansluta till den vid ett senare tillfälle från samma dator eller från en annan dator.
Det här avsnittet beskriver hur du skapar, använder, hämtar och tar bort PSSessioner. Mer avancerad information finns i about_PSSession_Details.
Obs! PSSessioner använder Windows PowerShell-fjärrkommunikationsinfrastrukturen. Om du vill använda PSSessions måste de lokala datorerna och fjärrdatorerna konfigureras för fjärrkommunikation. Mer information finns i about_Remote_Requirements.
Om du vill skapa en PSSession på en lokal dator i Windows Vista och senare versioner av Windows måste du starta Windows PowerShell med alternativet Kör som administratör.
Vad är en session?
En session är en miljö där Windows PowerShell körs.
Varje gång du startar Windows PowerShell skapas en session åt dig och du kan köra kommandon i sessionen. Du kan också lägga till objekt i sessionen, till exempel moduler och snapin-moduler, och du kan skapa objekt, till exempel variabler, funktioner och alias. Dessa objekt finns bara i sessionen och tas bort när sessionen avslutas.
Du kan också skapa användarhanterade sessioner, så kallade "Windows PowerShell-sessioner" eller "PSSessioner", på den lokala datorn eller på en fjärrdator. Precis som standardsessionen kan du köra kommandon i en PSSession och lägga till och skapa objekt. Men till skillnad från den session som startar automatiskt kan du styra de PSSessioner som du skapar. Du kan hämta, skapa, konfigurera och ta bort dem, koppla från och återansluta till dem och köra flera kommandon i samma PSSession. PSSession förblir tillgänglig tills du tar bort den eller tidsgränsen uppnås.
Vanligtvis skapar du en PSSession för att köra en serie relaterade kommandon på en fjärrdator. När du skapar en PSSession på en fjärrdator upprättar Windows PowerShell en beständig anslutning till fjärrdatorn för att stödja sessionen.
Om du använder parametern ComputerName för cmdleten Invoke-Command
eller Enter-PSSession
för att köra ett fjärrkommando eller för att starta en interaktiv session skapar Windows PowerShell en tillfällig session på fjärrdatorn och stänger sessionen så snart kommandot är klart eller så snart den interaktiva sessionen avslutas. Du kan inte styra dessa tillfälliga sessioner och du kan inte använda dem för mer än ett enda kommando eller en enda interaktiv session.
I Windows PowerShell är den "aktuella sessionen" den session som du arbetar i. Den "aktuella sessionen" kan referera till vilken session som helst, inklusive en tillfällig session eller en PSSession.
Varför använda en PSSession?
Använd en PSSession när du behöver en beständig anslutning till en fjärrdator. Med en PSSession kan du köra en serie kommandon som delar data, till exempel värdet för variabler, innehållet i en funktion eller definitionen av ett alias.
Du kan köra fjärrkommandon utan att skapa en PSSession. Använd parametern ComputerName för fjärraktiverade cmdletar för att köra ett enda kommando eller en serie orelaterade kommandon på en eller flera datorer.
När du använder parametern ComputerName för Invoke-Command
eller Enter-PSSession
upprättar Windows PowerShell en tillfällig anslutning till fjärrdatorn och stänger sedan anslutningen så snart kommandot har slutförts. Alla dataelement som du skapar går förlorade när anslutningen stängs.
Andra cmdletar som har en ComputerName-parameter , till exempel Get-Eventlog
och Get-WmiObject
, använder olika fjärrkommunikationstekniker för att samla in data. Ingen skapar en beständig anslutning som en PSSession.
Skapa en PSSession
Om du vill skapa en PSSession använder du cmdleten New-PSSession
. Om du vill skapa PSSession på en fjärrdator använder du parametern ComputerName för cmdleten New-PSSession
.
Följande kommando skapar till exempel en ny PSSession på Server01-datorn.
New-PSSession -ComputerName Server01
När du skickar kommandot New-PSSession
skapar du PSSession och returnerar ett objekt som representerar PSSession. Du kan spara objektet i en variabel när du skapar PSSession, eller så kan du använda ett Get-PSSession
kommando för att hämta PSSession vid ett senare tillfälle.
Följande kommando skapar till exempel en ny PSSession på Server01-datorn och sparar det resulterande objektet i variabeln $ps.
$ps = New-PSSession -ComputerName Server01
Skapa PSSessioner på flera datorer
Om du vill skapa PSSessioner på flera datorer använder du parametern ComputerName för cmdleten New-PSSession
. Ange namnen på fjärrdatorerna i en kommaavgränsad lista.
Om du till exempel vill skapa PSSessioner på datorerna Server01, Server02 och Server03 skriver du:
New-PSSession -ComputerName Server01, Server02, Server03
New-PSSession
skapar en PSSession på var och en av fjärrdatorerna.
Så här hämtar du PSSessions
Om du vill hämta PSSessioner som skapades i den aktuella sessionen använder du cmdleten Get-PSSession
utan parametern ComputerName . Get-PSSession
returnerar samma typ av objekt som New-PSSession
returneras.
Följande kommando hämtar alla PSSessioner som skapades i den aktuella sessionen.
Get-PSSession
Standardvisningen av PSSessions visar deras ID och ett standardvisningsnamn. Du kan tilldela ett alternativt visningsnamn när du skapar sessionen.
Id Name ComputerName State ConfigurationName
--- ---- ------------ ----- ---------------------
1 Session1 Server01 Opened Microsoft.PowerShell
2 Session2 Server02 Opened Microsoft.PowerShell
3 Session3 Server03 Opened Microsoft.PowerShell
Du kan också spara PSSessions i en variabel. Följande kommando hämtar PSSessions och sparar dem i variabeln $ps 123.
$ps123 = Get-PSSession
När du använder PSSession-cmdletar kan du referera till en PSSession med dess ID, dess namn eller dess instans-ID (ett GUID). Följande kommando hämtar en PSSession med sitt ID och sparar den i variabeln $ps 01.
$ps01 = Get-PSSession -Id 1
Från och med Windows PowerShell 3.0 underhålls PSSessioner på fjärrdatorn. Om du vill hämta PSSessioner som du skapade på vissa fjärrdatorer använder du parametern ComputerName för cmdleten Get-PSSession
. Följande kommando hämtar PSSessioner som du skapade på server01-fjärrdatorn. Detta inkluderar PSSessioner som skapats i den aktuella sessionen och i andra sessioner på den lokala datorn eller andra datorer.
Get-PSSession -ComputerName Server01
I Windows PowerShell 2.0 Get-PSSession
hämtar endast de PSSessioner som skapades i den aktuella sessionen. Den hämtar inte PSSessioner som har skapats i andra sessioner eller på andra datorer, även om sessionerna är anslutna till och kör kommandon på den lokala datorn.
Köra kommandon i en PSSession
Om du vill köra ett kommando i en eller flera PSSessioner använder du cmdleten Invoke-Command
.
Använd parametern Session för att ange parametern PSSessions och ScriptBlock för att ange kommandot.
Om du till exempel vill köra ett ("dir") kommando i var och en Get-ChildItem
av de tre PSSessioner som sparats i variabeln $ps 123 skriver du:
Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }
Ta bort PSSessioner
När du är klar med PSSession använder du cmdleten Remove-PSSession
för att ta bort PSSession och för att frigöra de resurser som den använde.
Remove-PSSession -Session $ps
eller
Remove-PSSession -Id 1
Om du vill ta bort en PSSession från en fjärrdator använder du parametern ComputerName för cmdleten Remove-PSSession
.
Remove-PSSession -ComputerName Server01 -Id 1
Om du inte tar bort PSSession förblir PSSession tillgänglig för användning tills tidsgränsen uppnås.
Du kan också använda parametern IdleTimeout för cmdleten New-PSSessionOption
för att ange en förfallotid för en inaktiv PSSession. Mer information finns i New-PSSessionOption.
PSSession-cmdletarna
För en lista över PSSession-cmdletar skriver du:
Get-Help *-PSSession
- Connect-PSSession: Ansluter en PSSession till den aktuella sessionen
- Disconnect-PSSession: Kopplar från en PSSession från den aktuella sessionen
- Enter-PSSession: Startar en interaktiv session
- Exit-PSSession: Avslutar en interaktiv session
- Get-PSSession: Hämtar PSSessions i den aktuella sessionen
- Ny PSSession: Skapar en ny PSSession på en lokal dator eller fjärrdator
- Receive-PSSession: Hämtar resultatet av kommandon som kördes i en frånkopplad session
- Remove-PSSession: Tar bort PSSessions i den aktuella sessionen
Mer information
Mer information om PSSessioner finns i about_PSSession_Details.