about_PSSessions

Korte beschrijving

Beschrijft PowerShell-sessies (PSSessions) en legt uit hoe u een permanente verbinding met een externe computer tot stand kunt brengen.

Lange beschrijving

Als u PowerShell-opdrachten wilt uitvoeren op een externe computer, kunt u de parameter ComputerName van een cmdlet gebruiken, of u kunt een PowerShell-sessie (PSSession) maken en opdrachten uitvoeren in de PSSession.

Wanneer u een PSSession maakt, maakt PowerShell een permanente verbinding met de externe computer. Gebruik een PSSession om een reeks gerelateerde opdrachten uit te voeren op een externe computer. Opdrachten die worden uitgevoerd in dezelfde PSSession kunnen gegevens delen, zoals de waarden van variabelen, aliassen en functies.

U kunt ook een PSSession maken op de lokale computer en er opdrachten in uitvoeren. Een lokale PSSession maakt gebruik van de PowerShell-infrastructuur voor remoting om de PSSession te maken en te onderhouden.

Vanaf Windows PowerShell 3.0 zijn PSSessions op Windows onafhankelijk van de sessies waarin ze worden gemaakt. Actieve PSSessions worden onderhouden op de externe computer (of de computer aan de externe kant of "serverzijde" van de verbinding). Als gevolg hiervan op Windows kunt u de verbinding met een PSSession op een externe Windows-computer verbreken en op een later tijdstip opnieuw verbinding maken vanaf dezelfde computer of vanaf een andere Windows computer.

In dit onderwerp wordt uitgelegd hoe u PSSessions maakt, gebruikt, opstart en verwijdert. Zie voor meer geavanceerde informatie about_PSSession_Details.

Opmerking: PSSessions maken gebruik van de infrastructuur voor het op de schalen van PowerShell. Als u PSSessions wilt gebruiken, moeten de lokale en externe computers zijn geconfigureerd voor externe toegang. Zie voor meer informatie about_Remote_Requirements.

In Windows Vista en latere versies van Windows moet u PowerShell starten met de optie Als administrator uitvoeren om een PSSession te maken op een lokale computer.

Wat is een sessie?

Een sessie is een omgeving waarin PowerShell wordt uitgevoerd.

Telkens wanneer u PowerShell start, wordt er een sessie voor u gemaakt en kunt u opdrachten uitvoeren in de sessie. U kunt ook items toevoegen aan uw sessie, zoals modules en modules, en u kunt items maken, zoals variabelen, functies en aliassen. Deze items bestaan alleen in de sessie en worden verwijderd wanneer de sessie wordt beëindigd.

U kunt ook door de gebruiker beheerde sessies maken, ook wel 'PowerShell-sessies' of 'PSSessions' genoemd, op de lokale computer of op een externe computer. Net als bij de standaardsessie kunt u opdrachten uitvoeren in een PSSession en items toevoegen en maken. In tegenstelling tot de sessie die automatisch wordt gestart, kunt u echter de PSSessions die u maakt, bepalen. U kunt ze krijgen, maken, configureren en verwijderen, de verbinding verbreken en er opnieuw verbinding mee maken, en meerdere opdrachten uitvoeren in dezelfde PSSession. De PSSession blijft beschikbaar totdat u deze verwijdert of er een times-out is.

Normaal gesproken maakt u een PSSession om een reeks gerelateerde opdrachten uit te voeren op een externe computer. Wanneer u een PSSession op een externe computer maakt, maakt PowerShell een permanente verbinding met de externe computer ter ondersteuning van de sessie.

Als u de parameter ComputerName van de cmdlet of gebruikt om een externe opdracht uit te voeren of om een interactieve sessie te starten, maakt PowerShell een tijdelijke sessie op de externe computer en wordt de sessie gesloten zodra de opdracht is voltooid of Invoke-Command Enter-PSSession zodra de interactieve sessie is beëindigd. U kunt deze tijdelijke sessies niet controleren en u kunt ze niet gebruiken voor meer dan één opdracht of één interactieve sessie.

In PowerShell is de 'huidige sessie' de sessie waarin u werkt. De 'huidige sessie' kan verwijzen naar elke sessie, met inbegrip van een tijdelijke sessie of een PSSession.

Waarom een PSSession gebruiken?

Gebruik een PSSession wanneer u een permanente verbinding met een externe computer nodig hebt. Met een PSSession kunt u een reeks opdrachten uitvoeren die gegevens delen, zoals de waarde van variabelen, de inhoud van een functie of de definitie van een alias.

U kunt externe opdrachten uitvoeren zonder een PSSession te maken. Gebruik de parameter ComputerName van cmdlets op afstand om één opdracht of een reeks niet-gerelateerde opdrachten uit te voeren op een of meer computers.

Wanneer u de parameter ComputerName van of Invoke-Command Enter-PSSessiongebruikt, maakt PowerShell een tijdelijke verbinding met de externe computer en wordt de verbinding vervolgens gesloten zodra de opdracht is voltooid. Alle gegevenselementen die u maakt, gaan verloren wanneer de verbinding wordt gesloten.

Andere cmdlets die een ComputerName-parameter hebben, Get-Eventlog zoals en Get-WmiObject, gebruiken verschillende technologieën voor remoting om gegevens te verzamelen. Met Geen wordt een permanente verbinding gemaakt, zoals een PSSession.

Een PSSession maken

Gebruik de cmdlet om een New-PSSession PSSession te maken. Als u de PSSession op een externe computer wilt maken, gebruikt u de parameter ComputerName van de New-PSSession cmdlet .

Met de volgende opdracht maakt u bijvoorbeeld een nieuwe PSSession op de computer Server01.

New-PSSession -ComputerName Server01

Wanneer u de opdracht indient, maakt New-PSSession de PSSession en retourneert een object dat de PSSession vertegenwoordigt. U kunt het object opslaan in een variabele wanneer u de PSSession maakt, Get-PSSession of u kunt een opdracht gebruiken om de PSSession op een later tijdstip op te halen.

Met de volgende opdracht maakt u bijvoorbeeld een nieuwe PSSession op de computer Server01 en slaat u het resulterende object op in de $ps variabele.

$ps = New-PSSession -ComputerName Server01

PSSessions maken op meerdere computers

Als u PSSessions op meerdere computers wilt maken, gebruikt u de parameter ComputerName van de New-PSSession cmdlet . Typ de namen van de externe computers in een door komma's gescheiden lijst.

Als u bijvoorbeeld PSSessions wilt maken op de computers Server01, Server02 en Server03, typt u:

New-PSSession -ComputerName Server01, Server02, Server03

New-PSSession maakt een PSSession op elk van de externe computers.

PSSessions krijgen

Gebruik de cmdlet zonder de parameter ComputerName om de PSSessions Get-PSSession op te halen die in uw huidige sessie zijn gemaakt. Get-PSSession retourneert hetzelfde type object dat New-PSSession retourneert.

Met de volgende opdracht haalt u alle PSSessions op die in de huidige sessie zijn gemaakt.

Get-PSSession

De standaardweergave van pssessions toont hun id en een standaardweergavenaam. U kunt een alternatieve weergavenaam toewijzen wanneer u de sessie maakt.

Id   Name       ComputerName    State    ConfigurationName
---  ----       ------------    -----    ---------------------
1    Session1   Server01        Opened   Microsoft.PowerShell
2    Session2   Server02        Opened   Microsoft.PowerShell
3    Session3   Server03        Opened   Microsoft.PowerShell

U kunt de PSSessions ook opslaan in een variabele. Met de volgende opdracht haalt u de PSSessions op en slaat u deze op in de $variabele ps123.

$ps123 = Get-PSSession

Wanneer u de PSSession-cmdlets gebruikt, kunt u verwijzen naar een PSSession op basis van de id, de naam of de exemplaar-id (een GUID). Met de volgende opdracht haalt u een PSSession op met de id en slaat u deze op in de $variabele ps01.

$ps01 = Get-PSSession -Id 1

Vanaf Windows PowerShell 3.0 worden PSSessions op de externe computer onderhouden. Gebruik de parameter Get-PSSession ComputerName van de cmdlet om PSSessions op te halen die u op bepaalde externe computers hebt gemaakt. Met de volgende opdracht haalt u de PSSessions op die u hebt gemaakt op de externe computer Server01. Dit omvat PSSessions gemaakt in de huidige sessie en in andere sessies op de lokale computer of andere computers.

Get-PSSession -ComputerName Server01

In Windows PowerShell 2.0 haalt alleen Get-PSSession de PSSessions op die in de huidige sessie zijn gemaakt. Het krijgt geen PSSessions die zijn gemaakt in andere sessies of op andere computers, zelfs niet als de sessies zijn verbonden met en opdrachten worden uitgevoerd op de lokale computer.

Opdrachten uitvoeren in een PSSession

Als u een opdracht wilt uitvoeren in een of meer PSSessions, gebruikt u de Invoke-Command cmdlet . Gebruik de sessieparameter om de PSSessions en de parameter ScriptBlock op te geven.

Als u bijvoorbeeld een opdracht Get-ChildItem ("dir") wilt uitvoeren in elk van de drie PSSessions die zijn opgeslagen in de variabele $ps 123, typt u:

Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }

PSSessions verwijderen

Wanneer u klaar bent met de PSSession, Remove-PSSession gebruikt u de cmdlet om de PSSession te verwijderen en de gebruikte resources vrij te geven.

Remove-PSSession -Session $ps

of

Remove-PSSession -Id 1

Als u een PSSession van een externe computer wilt verwijderen, gebruikt u de parameter ComputerName van de Remove-PSSession cmdlet .

Remove-PSSession -ComputerName Server01 -Id 1

Als u de PSSession niet verwijdert, blijft de PSSession beschikbaar voor gebruik totdat er een times-out is.

U kunt ook de parameter New-PSSessionOption IdleTimeout van de cmdlet gebruiken om een verlooptijd voor een niet-actieve PSSession in te stellen. Zie New-PSSessionOption voor meer informatie.

De PSSession-cmdlets

Voor een lijst met PSSession-cmdlets typt u:

Get-Help *-PSSession
  • Verbinding maken PSSession: verbindt een PSSession met de huidige sessie
  • Disconnect-PSSession: een PSSession wordt losgekoppeld van de huidige sessie
  • Enter-PSSession: Start een interactieve sessie
  • Exit-PSSession: een interactieve sessie wordt beëindigd
  • Get-PSSession: haalt de PSSessions op in de huidige sessie
  • New-PSSession: maakt een nieuwe PSSession op een lokale of externe computer
  • Receive-PSSession: haalt de resultaten op van opdrachten die zijn uitvoeren in een niet-verbonden sessie
  • Remove-PSSession: hiermee verwijdert u de PSSessions in de huidige sessie

Notitie

Niet-verbonden sessies worden alleen ondersteund op Windows. De Connect-PSSessioncmdlets Disconnect-PSSession, en Receive-PSSession zijn alleen beschikbaar op Windows. Zie voor meer informatie over niet-verbonden sessies about_Remote_Disconnected_Session

Meer informatie

Zie voor meer informatie over PSSessions about_PSSession_Details.

Zie ook