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 die gegevens delen.
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 waarmee opdrachten worden uitgevoerd, 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 bestaan gedurende de levensduur, 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 een) wacht tot vier minuten voordat de eerste opdracht is voltooid. Een tweede opdracht wordt asynchroon uitgevoerd (gelijktijdig) mislukt.
Over PSSessions
Telkens wanneer u PowerShell start, wordt er een sessie gemaakt. PowerShell maakt ook 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 computernaamparameter van de Invoke-Command of Enter-PSSession cmdlets gebruikt, brengt PowerShell een tijdelijke sessie tot stand om de opdracht uit te voeren en sluit u de sessie zodra de opdracht of de interactieve sessie is voltooid.
Als u echter de New-PSSession cmdlet gebruikt om een PSSession te maken, maakt PowerShell een permanente sessie 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 naar 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 computernaam 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, zoalsGet-ProcessGet-Service, Get-EventLogen Get-WmiObject alleen een ComputerName-parameter hebben. 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 New-PSSession een 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 van een lid van de groep Administrators kunnen opgeven. Zie about_Remote_Requirements voor meer informatie.
Kan ik mijn PSSessions in andere sessies zien?
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 deze ophalen vanuit 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, blijft de sessie behouden 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, er verbinding mee maken, gebruiken en beheren die u hebt gemaakt.
Kan ik vanaf een andere computer verbinding maken met een PSSession?
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 op 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 is 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.
Vervolgens kunt u, zelfs uren later, de Get-PSSession cmdlet gebruiken om de PSSession en de Connect-PSSession cmdlet op te halen om verbinding te maken met de PSSession vanuit 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 op de externe computer onderhouden.
Bovendien 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 verbroken 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 parameter Sessie ).
Als u een achtergrondtaak op een externe computer wilt starten, gebruikt u de cmdlet met de Invoke-Commandastaakparameter 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 wilt uitvoeren, 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 parameter Sessie ). Als u een PSSession gebruikt, behoudt de PSSession de gegevens uit eerdere opdrachten en bewaart 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 functies die momenteel in gebruik zijn.
Als u PSSessions wilt verwijderen, gebruikt u de Remove-PSSession cmdlet. Hiermee worden de PSSessions verwijderd en worden alle resources vrijgegeven die ze gebruikten.
U kunt ook de parameter New-PSSessionOptionIdleTimeOut gebruiken 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 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.