about_PSSessions

Kort beskrivning

Beskriver 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 PowerShell-kommandon på en fjärrdator kan du använda parametern ComputerName i en cmdlet, eller så kan du skapa en PowerShell-session (PSSession) och köra kommandon i PSSession.

När du skapar en PSSession upprättar 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 PowerShell-fjärrkommunikationsinfrastrukturen för att skapa och underhålla PSSession.

Från och Windows PowerShell 3.0 är PSSessioner oberoende av de sessioner där de skapas. Aktiva PSSessioner underhålls på fjärrdatorn (eller på fjärrdatorn eller på "serversidan" av 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 PowerShell-fjärrkommunikationsinfrastrukturen. Om du vill använda PSSessions måste de lokala och fjärranslutna datorerna vara konfigurerade 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 PowerShell med alternativet "Kör som administratör".

Vad är en session?

En session är en miljö där PowerShell körs.

Varje gång du startar 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ändar hanterade sessioner, som kallas "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 sessionen 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 är tillgänglig tills du tar bort den eller så går den ut.

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 PowerShell en beständig anslutning till fjärrdatorn som stöd för sessionen.

Om du använder parametern ComputerName för Invoke-Command cmdleten eller för att köra ett fjärrkommando eller för att starta en interaktiv session, skapar PowerShell en tillfällig session på fjärrdatorn och stänger sessionen så snart kommandot är klart eller så snart den interaktiva sessionen Enter-PSSession 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 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 ska jag 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 cmdlets 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 i eller upprättar PowerShell en tillfällig anslutning till fjärrdatorn och stänger sedan anslutningen så fort Invoke-Command Enter-PSSession kommandot har slutförts. Alla dataelement som du skapar går förlorade när anslutningen stängs.

Andra cmdlets som har parametern ComputerName, till exempel Get-Eventlog och , använder olika Get-WmiObject fjärrkommunikationstekniker för att samla in data. Ingen skapar en beständig anslutning som en PSSession.

Så här skapar du en PSSession

Använd cmdleten för att skapa New-PSSession en PSSession. Om du vill skapa PSSession på en fjärrdator använder du parametern ComputerName i New-PSSession cmdleten .

Följande kommando skapar till exempel en ny PSSession på Server01-datorn.

New-PSSession -ComputerName Server01

När du skickar kommandot skapar New-PSSession 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 kommando för att hämta Get-PSSession PSSession vid ett senare tillfälle.

Följande kommando skapar till exempel en ny PSSession på Server01-datorn och sparar det resulterande objektet i $ps variabeln.

$ps = New-PSSession -ComputerName Server01

Så här skapar du PSSessioner på flera datorer

Om du vill skapa PSSessions på flera datorer använder du parametern ComputerName i New-PSSession cmdleten . Skriv namnen på fjärrdatorerna i en kommaavgränsad lista.

Om du till exempel vill skapa PSSessions 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 DE PSSessions som skapades i den aktuella sessionen använder du Get-PSSession cmdleten 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 PSSessioner 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 PSSessioner i en variabel. Följande kommando hämtar PSSessions och sparar dem i $ variabeln ps123.

$ps123 = Get-PSSession

När du använder PSSession-cmdlets kan du referera till en PSSession efter dess ID, efter dess namn eller dess instans-ID (ett GUID). Följande kommando hämtar en PSSession efter dess ID och sparar den i $ variabeln ps01.

$ps01 = Get-PSSession -Id 1

Från och Windows PowerShell 3.0 underhålls PSSessioner på fjärrdatorn. Om du vill hämta PSSessioner som du har skapat på vissa fjärrdatorer använder du parametern ComputerName för Get-PSSession cmdleten . Följande kommando hämtar de PSSessions 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. Det 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 Invoke-Command cmdleten . Använd parametern Session för att ange PSSessions och parametern ScriptBlock för att ange kommandot.

Om du till exempel vill köra ett ("dir")-kommando i var och en av de tre Get-ChildItem PSSessions 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 för att ta bort PSSession och för att frigöra Remove-PSSession 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 i Remove-PSSession cmdleten .

Remove-PSSession -ComputerName Server01 -Id 1

Om du inte tar bort PSSession är PSSession fortfarande tillgängligt för användning tills den får sin sluttid.

Du kan också använda parametern IdleTimeout för cmdleten för att ange en New-PSSessionOption förfallotid för en inaktiv PSSession. Mer information finns i New-PSSessionOption.

PSSession-cmdletarna

Om du vill se en lista över PSSession-cmdlets 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
  • New-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.

Se även

about_Remote

about_Remote_Disconnected_Sessions

about_Remote_Requirements

Anslut PSSession

Disconnect-PSSession

Enter-PSSession

Avsluta PSSession

Get-PSSession

Invoke-Command

New-PSSession

Remove-PSSession