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 för en cmdlet eller 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 med Windows PowerShell 3.0 är PSSessioner i Windows 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 i Windows koppla från en PSSession på en fjärransluten Windows-dator och återansluta till den vid ett senare tillfälle från samma dator eller från en annan Windows-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 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 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ändarhanterade sessioner, så kallade "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 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 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 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-PSSessionupprättar 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
  • Anslut-PSSession: Anslut 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

Kommentar

Frånkopplade sessioner stöds endast i Windows. Cmdletarna Connect-PSSession, Disconnect-PSSessionoch Receive-PSSession är endast tillgängliga i Windows. Mer information om frånkopplade sessioner finns i about_Remote_Disconnected_Session

Mer information

Mer information om PSSessioner finns i about_PSSession_Details.

Se även