Delen via


about_PSSession_Details

Korte beschrijving

Biedt gedetailleerde informatie over PowerShell-sessies en de rol die ze spelen in externe opdrachten.

Lange beschrijving

Een sessie is een omgeving waarin PowerShell wordt uitgevoerd. Er wordt een sessie voor u gemaakt wanneer u PowerShell start. U kunt extra sessies maken, 'PowerShell-sessies' of 'PSSessions' op uw computer of een andere computer.

In tegenstelling tot de sessies die PowerShell voor u maakt, beheert en beheert u de PSSessions die u maakt.

PSSessions spelen een belangrijke rol bij externe computing. Wanneer u een PSSession maakt die is verbonden met een externe computer, brengt PowerShell een permanente verbinding tot stand met de externe computer ter ondersteuning van de PSSession. U kunt de PSSession gebruiken om een reeks opdrachten, functies en scripts uit te voeren waarmee gegevens worden gedeeld.

Dit onderwerp bevat gedetailleerde informatie over sessies en PSSessions in PowerShell. Zie about_PSSessions voor basisinformatie over de taken die u met sessies kunt uitvoeren.

Over sessies

Technisch gezien is een sessie een uitvoeringsomgeving waarin PowerShell wordt uitgevoerd. Elke sessie bevat een exemplaar van de System.Management.Automation-engine en een hostprogramma waarin PowerShell wordt uitgevoerd. De host kan de vertrouwde PowerShell-console of een ander programma zijn dat opdrachten uitvoert, zoals Cmd.exe of een programma dat is gebouwd om PowerShell te hosten, zoals Windows PowerShell Integrated Scripting Environment (ISE). Vanuit het perspectief van Windows is een sessie een Windows-proces op de doelcomputer.

Elke sessie wordt onafhankelijk geconfigureerd. Het bevat zijn eigen eigenschappen, het eigen uitvoeringsbeleid en de eigen profielen. De omgeving die bestaat wanneer de sessie wordt gemaakt, blijft behouden, zelfs als u de omgeving op de computer wijzigt. Alle sessies worden gemaakt in een globaal bereik, zelfs sessies die u in een script maakt.

U kunt slechts één opdracht (of opdrachtpijplijn) tegelijk uitvoeren in een sessie. Een tweede opdracht wordt synchroon uitgevoerd (één voor één) wacht tot vier minuten voordat de eerste opdracht is voltooid. Een tweede opdracht voert asynchroon (gelijktijdig) uit.

Over PSSessions

Telkens wanneer u PowerShell start, wordt er een sessie gemaakt. En PowerShell maakt tijdelijke sessies om afzonderlijke opdrachten uit te voeren. U kunt echter ook sessies maken (ook wel 'PowerShell-sessies' of 'PSSessions' genoemd) die u beheert en beheert.

PSSessions zijn essentieel voor externe opdrachten. Als u de parameter ComputerName van de Invoke-Command of Enter-PSSession cmdlets gebruikt, wordt in PowerShell een tijdelijke sessie gemaakt om de opdracht uit te voeren en vervolgens de sessie te sluiten zodra de opdracht of de interactieve sessie is voltooid.

Als u echter de New-PSSession cmdlet gebruikt om een PSSession te maken, brengt PowerShell een permanente sessie tot stand op de externe computer waarin u meerdere opdrachten of interactieve sessies kunt uitvoeren. De PSSessions die u maakt, blijven geopend en beschikbaar voor gebruik totdat u ze verwijdert of totdat u de sessie sluit waarin ze zijn gemaakt.

Wanneer u een PSSession maakt op een externe computer, maakt het systeem een PowerShell-proces op de externe computer en brengt het een verbinding tot stand van de lokale computer met het proces op de externe computer. Wanneer u een PSSession maakt op de lokale computer, worden zowel het nieuwe proces als de verbindingen op de lokale computer gemaakt.

Wanneer heb ik een PSSession nodig?

De Invoke-Command en Enter-PSSession cmdlets hebben zowel ComputerName - als Sessieparameters . U kunt een van beide gebruiken om een externe opdracht uit te voeren.

Gebruik de parameter ComputerName om één opdracht of een reeks niet-gerelateerde opdrachten uit te voeren op een of meer computers.

Als u opdrachten wilt uitvoeren die gegevens delen, hebt u een permanente verbinding met de externe computer nodig. Maak in dat geval een PSSession en gebruik vervolgens de sessieparameter om opdrachten uit te voeren in de PSSession.

Veel andere cmdlets die gegevens ophalen van externe computers, zoals Get-Process, Get-Serviceen Get-EventLogGet-WmiObject hebben alleen een ComputerName-parameter. Ze gebruiken andere technologieën dan externe communicatie van PowerShell om gegevens op afstand te verzamelen. Deze cmdlets hebben geen sessieparameter , maar u kunt de Invoke-Command cmdlet gebruiken om deze opdrachten uit te voeren in een PSSession.

Hoe maak ik een PSSession?

Gebruik de New-PSSession cmdlet om een PSSession te maken. U kunt een New-PSSession PSSession maken op een lokale of externe computer.

Kan ik een PSSession maken op elke computer?

Als u een PSSession wilt maken die is verbonden met een externe computer, moet de computer worden geconfigureerd voor externe communicatie in PowerShell. De huidige gebruiker moet lid zijn van de groep Administrators op de externe computer of de huidige gebruiker moet de referenties kunnen opgeven van een lid van de groep Administrators. Zie about_Remote_Requirements voor meer informatie.

Kan ik mijn PSSessions zien in andere sessies?

Vanaf Windows PowerShell 3.0 haalt de parameter ComputerName van de Get-PSSession cmdlet PSSessions op die u hebt gemaakt op de opgegeven externe computers.

Actieve PSSessions worden onderhouden op de externe computer (de 'serverzijde' van een verbinding) en u kunt ze ophalen uit elke sessie op elke computer.

Als u bijvoorbeeld een PSSession maakt van de Server01-computer naar de Server02-computer en vervolgens overschakelt naar de Server03-computer, kunt u een opdracht zoals de volgende gebruiken om de sessie op te halen.

Get-PSSession -ComputerName Server02

Zelfs als u de verbinding met de sessie verbreekt, wordt de sessie onderhouden op de externe computer totdat u deze verwijdert of er een time-out optreedt.

In Windows PowerShell 2.0 kunt u alleen de PSSessions ophalen die u in de huidige sessie hebt gemaakt. U kunt geen PSSessions ophalen die u in andere sessies hebt gemaakt.

Zie Get-PSSession voor meer informatie.

Kan ik de PSSessions zien die anderen op mijn computer hebben gemaakt?

U kunt alleen de PSSessions ophalen en beheren die anderen alleen hebben gemaakt als u de referenties kunt opgeven van de gebruiker die de PSSession heeft gemaakt of de sessieconfiguratie die door de PSSession wordt gebruikt RunAs-referenties bevat. Anders kunt u alleen de PSSessions ophalen, verbinden, gebruiken en beheren die u hebt gemaakt.

Kan ik verbinding maken met een PSSession vanaf een andere computer?

Vanaf Windows PowerShell 3.0 zijn PSSessions op Windows-computers onafhankelijk van de sessies waarin ze zijn gemaakt. Actieve PSSessions worden onderhouden op de computer aan de externe of 'serverzijde' van een verbinding.

Op een Windows-computer kunt u de cmdlet gebruiken om de Disconnect-PSSession verbinding met een PSSession te verbreken. De PSSession wordt losgekoppeld van de lokale sessie, maar wordt onderhouden op de externe computer. Opdrachten blijven worden uitgevoerd in de niet-verbonden PSSession. U kunt PowerShell sluiten en de oorspronkelijke computer afsluiten zonder de PSSession te onderbreken.

Zelfs uren later kunt u de cmdlet gebruiken om de Get-PSSession PSSession en de Connect-PSSession cmdlet op te halen om verbinding te maken met de PSSession vanaf een nieuwe sessie op een andere Windows-computer.

Zie about_Remote_Disconnected_Sessions voor meer informatie.

Wat gebeurt er met mijn PSSession als mijn computer stopt?

Niet-verbonden PSSessions zijn onafhankelijk van de sessies waarin ze zijn gemaakt. Als u een PSSession loskoppelt en vervolgens de oorspronkelijke computer sluit, wordt de PSSession onderhouden op de externe computer.

Daarnaast probeert PowerShell actieve PSSessions te herstellen die onbedoeld worden losgekoppeld, zoals door het opnieuw opstarten van een computer, een tijdelijke stroomstoring of netwerkonderbreking. PowerShell probeert de PSSession te onderhouden of te herstellen naar een geopende status, als de oorspronkelijke sessie nog steeds beschikbaar is of als dit niet het gevolg is van een niet-verbonden status.

Een 'actieve' PSSession is een PSSession die opdrachten uitvoert. Als een PSSession is verbonden (niet verbroken) en opdrachten worden uitgevoerd in de PSSession wanneer de verbonden sessie wordt gesloten, probeert PowerShell de PSSession op de externe computer te onderhouden. Als er echter geen opdrachten worden uitgevoerd in de PSSession, sluit PowerShell de PSSession wanneer de verbonden sessie wordt gesloten.

Zie about_Remote_Disconnected_Sessions voor meer informatie.

Kan ik een achtergrondtaak uitvoeren in een PSSession?

Ja. Een achtergrondtaak is een opdracht die asynchroon op de achtergrond wordt uitgevoerd zonder interactie met de huidige sessie. Wanneer u een opdracht verzendt om een taak te starten, retourneert de opdracht een taakobject, maar blijft de taak op de achtergrond worden uitgevoerd totdat deze is voltooid.

Gebruik de Start-Job opdracht om een achtergrondtaak op een lokale computer te starten. U kunt de achtergrondtaak uitvoeren in een tijdelijke verbinding (met behulp van de parameter ComputerName) of in een PSSession (met behulp van de sessieparameter).

Als u een achtergrondtaak op een externe computer wilt starten, gebruikt u de cmdlet met de Invoke-Command astaakparameter of gebruikt u de Invoke-Command cmdlet om een Start-Job opdracht uit te voeren op een externe computer. Wanneer u de parameter AsJob gebruikt, kunt u de computernaam of sessieparameters gebruiken.

Invoke-Command Wanneer u een Start-Job opdracht uitvoert, moet u de opdracht uitvoeren in een PSSession. Als u de parameter ComputerName gebruikt, beëindigt PowerShell de verbinding wanneer het taakobject wordt geretourneerd en wordt de taak onderbroken.

Zie About Jobs (Taken) voor meer informatie.

Kan ik een interactieve sessie uitvoeren?

Ja. Gebruik de Enter-PSSession cmdlet om een interactieve sessie met een externe computer te starten. In een interactieve sessie worden de opdrachten die u typt, uitgevoerd op de externe computer, net zoals wanneer u ze rechtstreeks op de externe computer hebt getypt.

U kunt een interactieve sessie uitvoeren in een tijdelijke sessie (met behulp van de parameter ComputerName) of in een PSSession (met behulp van de sessieparameter). Als u een PSSession gebruikt, bewaart de PSSession de gegevens uit eerdere opdrachten en behoudt de PSSession alle gegevens die tijdens de interactieve sessie worden gegenereerd voor gebruik in latere opdrachten.

Wanneer u de interactieve sessie beëindigt, blijft de PSSession geopend en beschikbaar voor gebruik.

Zie Enter-PSSession en Exit-PSSession voor meer informatie.

Moet ik de PSSessions verwijderen?

Ja. Een PSSession is een proces, een zelfstandige omgeving die gebruikmaakt van geheugen en andere resources, zelfs wanneer u deze niet gebruikt. Wanneer u klaar bent met een PSSession, verwijdert u deze. Als u meerdere PSSessions maakt, sluit u de PSSessions die u niet gebruikt en onderhoudt u alleen de pssessions die momenteel in gebruik zijn.

Gebruik de Remove-PSSession cmdlet om PSSessions te verwijderen. Hiermee worden de PSSessions verwijderd en worden alle resources vrijgegeven die ze gebruikten.

U kunt ook de parameter IdleTimeOut gebruiken New-PSSessionOption om een niet-actieve PSSession te sluiten na een interval dat u opgeeft. Zie New-PSSessionOption voor meer informatie.

Als u een PSSession-object opslaat in een variabele en vervolgens de PSSession verwijdert of deze laat opvallen, bevat de variabele nog steeds het PSSession-object, maar de PSSession is niet actief en kan niet worden gebruikt of hersteld.

Zijn alle sessies en PSSessions gelijk?

Nee Ontwikkelaars kunnen aangepaste sessies maken die alleen geselecteerde providers en cmdlets bevatten. Als een opdracht in één sessie werkt, maar niet in een andere, kan dit komen doordat de sessie wordt beperkt.

Zie ook