about_PSSessions
Korte beschrijving
Beschrijft PowerShell-sessies (PSSessions) en legt uit hoe u een permanente verbinding tot stand brengt met een externe computer.
Lange beschrijving
Als u PowerShell-opdrachten wilt uitvoeren op een externe computer, kunt u de parameter ComputerName van een cmdlet gebruiken of 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 in dezelfde PSSession worden uitgevoerd, 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 externe PowerShell-infrastructuur voor het maken en onderhouden van de PSSession.
Vanaf Windows PowerShell 3.0 zijn PSSessions in Windows onafhankelijk van de sessies waarin ze worden gemaakt. Actieve PSSessions worden onderhouden op de externe computer (of de computer aan het externe uiteinde of aan de serverzijde van de verbinding). Als gevolg hiervan kunt u in Windows 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 kunt maken, gebruiken, ophalen en verwijderen. Zie about_PSSession_Details voor meer informatie.
Opmerking: PSSessions maken gebruik van de externe PowerShell-infrastructuur. Als u PSSessions wilt gebruiken, moeten de lokale en externe computers worden geconfigureerd voor externe communicatie. Zie about_Remote_Requirements voor meer informatie.
Als u in Windows Vista en latere versies van Windows een PSSession wilt maken op een lokale computer, moet u PowerShell starten met de optie Uitvoeren als administrator.
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 beheren die u maakt. U kunt ze ophalen, 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 time-out optreedt.
Normaal gesproken maakt u een PSSession om een reeks gerelateerde opdrachten uit te voeren op een externe computer. Wanneer u een PSSession maakt op een externe computer, brengt PowerShell een permanente verbinding tot stand met de externe computer ter ondersteuning van de sessie.
Als u de parameter ComputerName van de Invoke-Command
of Enter-PSSession
cmdlet 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 sluit de sessie zodra de opdracht is voltooid of zodra de interactieve sessie afloopt. U kunt deze tijdelijke sessies niet beheren 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 waarmee gegevens worden gedeeld, 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 die extern zijn ingeschakeld om één opdracht of een reeks niet-gerelateerde opdrachten uit te voeren op een of meer computers.
Wanneer u de parameter ComputerName van Invoke-Command
of Enter-PSSession
gebruikt, brengt PowerShell een tijdelijke verbinding tot stand met de externe computer en sluit de verbinding zodra de opdracht is voltooid. Alle gegevenselementen die u maakt, gaan verloren wanneer de verbinding wordt gesloten.
Andere cmdlets met een ComputerName-parameter , zoals Get-Eventlog
en Get-WmiObject
, gebruiken verschillende externe technologieën om gegevens te verzamelen. Geen maakt een permanente verbinding zoals een PSSession.
Een PSSession maken
Gebruik de New-PSSession
cmdlet om een PSSession te maken. Als u de PSSession wilt maken op een externe computer, gebruikt u de parameter ComputerName van de New-PSSession
cmdlet.
Met de volgende opdracht maakt u bijvoorbeeld een nieuwe PSSession op de Server01-computer.
New-PSSession -ComputerName Server01
Wanneer u de opdracht verzendt, New-PSSession
maakt u de PSSession en retourneert u een object dat de PSSession vertegenwoordigt. U kunt het object opslaan in een variabele wanneer u de PSSession maakt, of u kunt een Get-PSSession
opdracht gebruiken om de PSSession op een later tijdstip op te halen.
Met de volgende opdracht maakt u bijvoorbeeld een nieuwe PSSession op de Server01-computer 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 één PSSession op elk van de externe computers.
PSSessions ophalen
Gebruik de Get-PSSession
cmdlet zonder de parameter ComputerName om de PSSessions op te halen die in uw huidige sessie zijn gemaakt. Get-PSSession
retourneert hetzelfde type object dat New-PSSession
wordt geretourneerd.
Met de volgende opdracht worden alle PSSessions opgeslagen die in de huidige sessie zijn gemaakt.
Get-PSSession
De standaardweergave van de 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 worden de PSSessions opgeslagen in de variabele $ps 123.
$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 wordt een PSSession op basis van de bijbehorende id opgeslagen en opgeslagen in de variabele $ps 01.
$ps01 = Get-PSSession -Id 1
Vanaf Windows PowerShell 3.0 worden PSSessions onderhouden op de externe computer. Als u PSSessions wilt ophalen die u hebt gemaakt op bepaalde externe computers, gebruikt u de parameter ComputerName van de Get-PSSession
cmdlet. Met de volgende opdracht haalt u de PSSessions op die u hebt gemaakt op de externe server01-computer. Dit omvat PSSessions die zijn 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 Get-PSSession
krijgt u alleen de PSSessions die in de huidige sessie zijn gemaakt. Er worden geen PSSessions weergegeven die zijn gemaakt in andere sessies of op andere computers, zelfs als de sessies zijn verbonden met en opdrachten uitvoeren op de lokale computer.
Opdrachten uitvoeren in een PSSession
Gebruik de Invoke-Command
cmdlet om een opdracht uit te voeren in een of meer PSSessions.
Gebruik de sessieparameter om de PSSessions en de parameter ScriptBlock op te geven om de opdracht op te geven.
Als u bijvoorbeeld een Get-ChildItem
opdracht ('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, gebruikt u de Remove-PSSession
cmdlet om de PSSession te verwijderen en de resources vrij te geven die het gebruikte.
Remove-PSSession -Session $ps
or
Remove-PSSession -Id 1
Als u een PSSession wilt verwijderen van een externe computer, 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 time-out optreedt.
U kunt ook de parameter IdleTimeout van de New-PSSessionOption
cmdlet gebruiken om een verlooptijd in te stellen voor een niet-actieve PSSession. Zie New-PSSessionOption voor meer informatie.
De PSSession-cmdlets
Voor een lijst met PSSession-cmdlets, typt u:
Get-Help *-PSSession
- Connect-PSSession: Hiermee wordt een PSSession verbonden met de huidige sessie
- Disconnect-PSSession: Hiermee verbreekt u een PSSession van de huidige sessie
- Enter-PSSession: Start een interactieve sessie
- Exit-PSSession: Een interactieve sessie beëindigen
- Get-PSSession: Haalt de PSSessions op in de huidige sessie
- New-PSSession: Hiermee maakt u een nieuwe PSSession op een lokale of externe computer
- Receive-PSSession: Haalt de resultaten op van opdrachten die zijn uitgevoerd in een niet-verbonden sessie
- Remove-PSSession: Hiermee verwijdert u de PSSessions in de huidige sessie
Notitie
Niet-verbonden sessies worden alleen ondersteund in Windows. De Connect-PSSession
, Disconnect-PSSession
en Receive-PSSession
cmdlets zijn alleen beschikbaar in Windows. Zie about_Remote_Disconnected_Session voor meer informatie over niet-verbonden sessies
Meer informatie
Zie about_PSSession_Details voor meer informatie over PSSessions.