about_Remote_Disconnected_Sessions
Korte beschrijving
Hierin wordt uitgelegd hoe u de verbinding met een PowerShell-sessie (PSSession) loskoppelt en opnieuw verbindt.
Lange beschrijving
Vanaf PowerShell 3.0 kunt u de verbinding met een PSSession verbreken en opnieuw verbinding maken met de PSSession op dezelfde computer of een andere computer. De sessiestatus wordt onderhouden en opdrachten in de PSSession blijven worden uitgevoerd terwijl de sessie is verbroken.
De functie Niet-verbonden sessies is alleen beschikbaar wanneer de externe computer een Windows-computer met PowerShell 3.0 of een latere versie is en de lokale computer Windows gebruikt.
Met de functie Niet-verbonden sessies kunt u de sessie sluiten waarin een PSSession is gemaakt, en zelfs PowerShell sluiten en de computer afsluiten, zonder dat er opdrachten worden onderbroken die worden uitgevoerd in de PSSession. Niet-verbonden sessies zijn handig voor het uitvoeren van opdrachten die een langere tijd in beslag nemen en biedt de tijd en flexibiliteit van het apparaat die IT-professionals nodig hebben.
U kunt geen verbinding maken met een interactieve sessie die is gestart met de Enter-PSSession cmdlet.
U kunt niet-verbonden sessies gebruiken om PSSessions te beheren die onbedoeld zijn verbroken als gevolg van een computer- of netwerkstoring.
In het echte gebruik kunt u met de functie Niet-verbonden sessies beginnen met het oplossen van een probleem, uw aandacht vestigen op een probleem met een hogere prioriteit en vervolgens het werk aan de oplossing hervatten, zelfs op een andere computer op een andere locatie.
Verbinding met sessie-cmdlets verbroken
De volgende cmdlets ondersteunen de functie Niet-verbonden sessies:
Connect-PSSession: Maakt verbinding met een niet-verbonden PSSession.Disconnect-PSSession: Hiermee wordt een PSSession verbroken.Get-PSSession: Haalt PSSessions op de lokale computer of op externe computers op.Receive-PSSession: Haalt de resultaten op van opdrachten die zijn uitgevoerd in niet-verbonden sessies.Invoke-Command: Met de parameter InDisconnectedSession wordt een PSSession gemaakt en wordt de verbinding onmiddellijk verbroken.
Hoe de functie Niet-verbonden sessies werkt
Vanaf PowerShell 3.0 zijn PSSessions onafhankelijk van de sessies waarin ze worden gemaakt. Actieve PSSessions worden onderhouden op de externe computer of serverzijde van de verbinding, zelfs als de sessie waarin de PSSession is gemaakt is gesloten en de oorspronkelijke computer wordt afgesloten of verbroken van het netwerk.
In PowerShell 2.0 wordt de PSSession verwijderd van de externe computer wanneer de verbinding is verbroken met de oorspronkelijke sessie of de sessie waarin deze is gemaakt, eindigt.
Wanneer u een PSSession loskoppelt, blijft de PSSession actief en wordt deze op de externe computer onderhouden. De sessiestatus verandert van Actief in Verbroken. U kunt opnieuw verbinding maken met een niet-verbonden PSSession vanuit de huidige sessie of vanuit een andere sessie op dezelfde computer of vanaf een andere computer. De externe computer die de sessie onderhoudt, moet worden uitgevoerd en verbonden zijn met het netwerk.
Opdrachten in een niet-verbonden PSSession blijven ononderbroken worden uitgevoerd op de externe computer totdat de opdracht is voltooid of de uitvoerbuffer wordt gevuld. Als u wilt voorkomen dat een volledige uitvoerbuffer een opdracht onderbreekt, gebruikt u de parameter OutputBufferingMode van de Disconnect-PSSessionNew-PSSessionOption, of New-PSTransportOption cmdlets.
Verbroken sessies worden behouden in de status Verbroken op de externe computer. Ze zijn beschikbaar voor u om opnieuw verbinding te maken, totdat u de PSSession verwijdert, zoals met behulp van de Remove-PSSession cmdlet, of totdat de time-out voor inactiviteit van de PSSession verloopt. U kunt de time-out voor inactiviteit van een PSSession aanpassen met behulp van de parameters IdleTimeoutSec of IdleTimeout van de Disconnect-PSSession, New-PSSessionOptionof New-PSTransportOption cmdlets.
Een andere gebruiker kan verbinding maken met PSSessions die u hebt gemaakt, maar alleen als ze de referenties kunnen opgeven die zijn gebruikt om de sessie te maken, of de RunAs referenties van de sessieconfiguratie gebruiken.
PSSessions ophalen
Vanaf PowerShell 3.0 krijgt de Get-PSSession cmdlet PSSessions op de lokale computer en externe computers. Het kan ook PSSessions ophalen die zijn gemaakt in de huidige sessie.
Als u PSSessions wilt ophalen op de lokale computer of externe computers, gebruikt u de parameters ComputerName of ConnectionUri . Zonder parameters haalt Get-PSSession u PSSession op die zijn gemaakt in de lokale sessie, ongeacht waar ze worden beƫindigd.
Wanneer u PSSessions krijgt, moet u ze zoeken op de computer waarop ze worden onderhouden, dat wil gezegd de externe computer of de computer aan de serverzijde .
Als u bijvoorbeeld een PSSession maakt op de Server01-computer, haalt u de sessie op van de Server01-computer. Als u een PSSession maakt van een andere computer naar de lokale computer, haalt u de sessie op van de lokale computer.
De volgende opdrachtreeks laat zien hoe Get-PSSession het werkt.
Met de eerste opdracht maakt u een sessie op de Server01-computer. De sessie bevindt zich op de Server01-computer.
New-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 Server01 Opened Microsoft.PowerShell Available
Als u de sessie wilt ophalen, gebruikt u de parameter ComputerName van Get-PSSession met een waarde van Server01.
Get-PSSession -ComputerName Server01
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 Server01 Opened Microsoft.PowerShell Available
Als de waarde van de parameter ComputerName van Get-PSSession localhost is, Get-PSSession haalt u PSSessions op die eindigen op en worden onderhouden op de lokale computer. Het krijgt geen PSSessions op de Server01-computer, zelfs niet als ze op de lokale computer zijn gestart.
Get-PSSession -ComputerName localhost
Gebruik de Get-PSSession cmdlet zonder parameters om sessies op te halen die zijn gemaakt in de huidige sessie. In dit voorbeeld Get-PSSession haalt u de PSSession op die is gemaakt in de huidige sessie en maakt u verbinding met de Server01-computer.
Get-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 Server01 Opened Microsoft.PowerShell Available
Sessies loskoppelen
Gebruik de Disconnect-PSSession cmdlet om een PSSession los te koppelen. Als u de PSSession wilt identificeren, gebruikt u de sessieparameter of pijplijn een PSSession van de New-PSSession of Get-PSSession cmdlets naar Disconnect-PSSession.
Met de volgende opdracht wordt de PSSession verbroken met de Server01-computer. U ziet dat de waarde van de eigenschap Status is verbroken en dat de beschikbaarheidgeen is.
Get-PSSession -ComputerName Server01 | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 Server01 Disconnected Microsoft.PowerShell None
Als u een niet-verbonden sessie wilt maken, gebruikt u de parameter InDisconnectedSession van de Invoke-Command cmdlet. Er wordt een sessie gemaakt, de opdracht gestart en de verbinding wordt onmiddellijk verbroken, voordat de opdracht uitvoer kan retourneren.
Met de volgende opdracht wordt een Get-WinEvent opdracht uitgevoerd in een niet-verbonden sessie op de externe Server02-computer.
Invoke-Command -ComputerName Server02 -InDisconnectedSession -ScriptBlock {
Get-WinEvent -LogName "*PowerShell*" }
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
4 Session3 Server02 Disconnected Microsoft.PowerShell None
Verbinding maken met verbroken sessies
U kunt verbinding maken met elke beschikbare niet-verbonden PSSession vanuit de sessie waarin u de PSSession of andere sessies op de lokale computer of andere computers hebt gemaakt.
U kunt een PSSession maken, opdrachten uitvoeren in de PSSession, de verbinding met de PSSession verbreken, PowerShell sluiten en de computer afsluiten. Uren later kunt u een andere computer openen, de PSSession ophalen, er verbinding mee maken en de resultaten ophalen van opdrachten die in de PSSession zijn uitgevoerd terwijl de verbinding is verbroken. Vervolgens kunt u meer opdrachten uitvoeren in de sessie.
Gebruik de Connect-PSSession cmdlet om verbinding te maken met een niet-verbonden PSSession. Gebruik de parameters ComputerName of ConnectionUri om de PSSession te identificeren of een PSSession van Get-PSSession tot Connect-PSSession.
Met de volgende opdracht worden de sessies op de Server02-computer ophaalt. De uitvoer bevat twee niet-verbonden sessies, die beide beschikbaar zijn.
Get-PSSession -ComputerName Server02
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 juneb-srv8320 Disconnected Microsoft.PowerShell None
4 Session3 juneb-srv8320 Disconnected Microsoft.PowerShell None
De volgende opdracht maakt verbinding met Session2. De PSSession is nu geopend en beschikbaar.
Connect-PSSession -ComputerName Server02 -Name Session2
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
2 Session2 juneb-srv8320 Opened Microsoft.PowerShell Available
De resultaten ophalen
Gebruik de Receive-PSSession cmdlet om de resultaten op te halen van opdrachten die zijn uitgevoerd in een niet-verbonden PSSession.
U kunt deze gebruiken in plaats van de Connect-PSSession cmdlet te gebruikenReceive-PSSession. Als de sessie al opnieuw is verbonden, Receive-PSSession worden de resultaten opgehaald van opdrachten die zijn uitgevoerd toen de sessie werd verbroken. Als de verbinding met PSSession nog steeds is verbroken, Receive-PSSession maakt u er verbinding mee en haalt u vervolgens de resultaten op van opdrachten die zijn uitgevoerd terwijl de verbinding is verbroken.
Receive-PSSession kan de resultaten in een taak retourneren (asynchroon) of naar het hostprogramma (synchroon). Gebruik de parameter OutTarget om Taak of Host te selecteren. De standaardwaarde is Host. Als de opdracht die wordt ontvangen echter is gestart in de huidige sessie als een taak, wordt deze standaard geretourneerd als een taak .
De volgende opdracht gebruikt de Receive-PSSession cmdlet om verbinding te maken met de PSSession op de Server02-computer en de resultaten op te halen van de Get-WinEvent opdracht die is uitgevoerd in de Sessie3-sessie. De opdracht maakt gebruik van de outTarget-parameter om de resultaten in een taak op te halen.
Receive-PSSession -ComputerName Server02 -Name Session3 -OutTarget Job
Id Name PSJobTypeName State HasMoreData Location
-- ---- ------------- ----- ----------- --------
3 Job3 RemoteJob Running True Server02
Gebruik de cmdlet om de resultaten van de Receive-Job taak op te halen.
Get-Job | Receive-Job -Keep
ProviderName: PowerShell
TimeCreated Id LevelDisplayName Message PSComputerName
----------- -- ---------------- ------- --------------
5/14/2012 7:26:04 PM 400 Information Engine stat Server02
5/14/2012 7:26:03 PM 600 Information Provider "W Server02
5/14/2012 7:26:03 PM 600 Information Provider "C Server02
5/14/2012 7:26:03 PM 600 Information Provider "V Server02
Status- en beschikbaarheidseigenschappen
De status - en beschikbaarheidseigenschappen van een niet-verbonden PSSession geven aan of de sessie beschikbaar is om er opnieuw verbinding mee te maken.
Wanneer een PSSession is verbonden met de huidige sessie, wordt de status geopend en is de beschikbaarheid beschikbaar. Wanneer u de verbinding met de PSSession verbreekt, wordt de STATUS PSSession verbroken en is de beschikbaarheid geen.
De waarde van de eigenschap State is relatief ten opzichte van de huidige sessie. Een waarde van Verbinding verbroken betekent dat de PSSession niet is verbonden met de huidige sessie. Maar het betekent niet dat de PSSession is losgekoppeld van alle sessies. Het kan zijn dat deze is verbonden met een andere sessie.
Gebruik de eigenschap Beschikbaarheid om te bepalen of u verbinding kunt maken of opnieuw verbinding kunt maken met de PSSession. Een waarde van None geeft aan dat u verbinding kunt maken met de sessie. Een waarde van Bezet geeft aan dat u geen verbinding kunt maken met de PSSession omdat deze is verbonden met een andere sessie.
Het volgende voorbeeld wordt uitgevoerd in twee PowerShell-sessies op dezelfde computer. Let op de veranderende waarden van de status - en beschikbaarheidseigenschappen in elke sessie omdat de PSSession is verbroken en opnieuw verbinding wordt gemaakt.
# Session 1
New-PSSession -ComputerName Server30 -Name Test
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server30 Opened Microsoft.PowerShell Available
# Session 2
Get-PSSession -ComputerName Server30 -Name Test
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server30 Disconnected Microsoft.PowerShell Busy
# Session 1
Get-PSSession -ComputerName Server30 -Name Test | Disconnect-PSSession
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server30 Disconnected Microsoft.PowerShell None
# Session 2
Get-PSSession -ComputerName Server30
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server30 Disconnected Microsoft.PowerShell None
# Session 2
Connect-PSSession -ComputerName Server30 -Name Test
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
3 Test Server30 Opened Microsoft.PowerShell Available
# Session 1
Get-PSSession -ComputerName Server30
Id Name ComputerName State ConfigurationName Availability
-- ---- ------------ ----- ----------------- ------------
1 Test Server30 Disconnected Microsoft.PowerShell Busy
# Idle Timeout
Verbroken sessies worden op de externe computer onderhouden totdat u ze verwijdert, zoals met behulp van de Remove-PSSession cmdlet, of er is een time-out opgetreden. De eigenschap IdleTimeout van een PSSession bepaalt hoe lang een niet-verbonden sessie wordt onderhouden voordat deze wordt verwijderd.
PSSessions zijn niet actief wanneer de heartbeat-thread geen antwoord ontvangt. Als u een sessie loskoppelt, wordt deze inactief en wordt de klok inactiviteit gestart, zelfs als opdrachten nog steeds worden uitgevoerd in de niet-verbonden sessie. PowerShell beschouwt niet-verbonden sessies om actief te zijn, maar niet actief.
Wanneer u sessies maakt en loskoppelt, controleert u of de time-out voor inactiviteit in de PSSession lang genoeg is om de sessie voor uw behoeften te onderhouden, maar niet zo lang dat er onnodige resources op de externe computer worden verbruikt.
De eigenschap IdleTimeoutMs van de sessieconfiguratie bepaalt de standaard time-out voor inactiviteit van sessies die gebruikmaken van de sessieconfiguratie. U kunt de standaardwaarde overschrijven, maar de waarde die u gebruikt, mag de eigenschap MaxIdleTimeoutMs van de sessieconfiguratie niet overschrijden.
Gebruik de volgende opdrachtindeling om de waarde van idleTimeoutMs en MaxIdleTimeoutMs van een sessieconfiguratie te vinden.
Get-PSSessionConfiguration |
Format-Table Name, IdleTimeoutMs, MaxIdleTimeoutMs
U kunt de standaardwaarde in de sessieconfiguratie overschrijven en de time-out voor inactiviteit van een PSSession instellen wanneer u een PSSession maakt en wanneer u de verbinding verbreekt.
Als u lid bent van de groep Administrators op de externe computer, kunt u de eigenschappen IdleTimeoutMs en MaxIdleTimeoutMs van sessieconfiguraties maken en wijzigen.
Time-outwaarden voor inactiviteit
De time-outwaarde voor inactiviteit van sessieconfiguraties en sessieopties bevindt zich in milliseconden. De time-outwaarde voor niet-actieve sessies en sessieconfiguratieopties is binnen enkele seconden.
U kunt de time-out voor inactiviteit van een PSSession instellen wanneer u de PSSession (New-PSSession, Invoke-Command) maakt en wanneer u de verbinding hiermee verbreekt (Disconnect-PSSession). U kunt de waarde idleTimeout echter niet wijzigen wanneer u verbinding maakt met de PSSession (Connect-PSSession) of resultaten opgeeft (Receive-PSSession).
De Connect-PSSession en Receive-PSSession cmdlets hebben een SessionOption-parameter die een SessionOption-object gebruikt, zoals een object dat wordt geretourneerd door de New-PSSessionOption cmdlet. De waarde IdleTimeout in sessionOption-object en de waarde IdleTimeout in de $PSSessionOption voorkeursvariabele wijzigen de waarde van de IdleTimeout van de PSSession in een Connect-PSSession of Receive-PSSession opdracht niet.
Als u een PSSession met een bepaalde time-outwaarde voor inactiviteit wilt maken, maakt u een $PSSessionOption voorkeursvariabele. Stel de waarde van de eigenschap IdleTimeout in op de gewenste waarde (in milliseconden).
Wanneer u PSSessions maakt, hebben de waarden in $PSSessionOption de variabele voorrang op de waarden in de sessieconfiguratie.
Met de volgende opdracht wordt bijvoorbeeld een time-out voor inactiviteit van 48 uur ingesteld:
$PSSessionOption = New-PSSessionOption -IdleTimeoutMSec 172800000
Als u een PSSession wilt maken met een bepaalde time-outwaarde voor inactiviteit, gebruikt u de parameter IdleTimeoutMSec van de New-PSSessionOption cmdlet. Gebruik vervolgens de sessieoptie in de waarde van de parameter SessionOption van de New-PSSession of Invoke-Command cmdlets.
De waarden die zijn ingesteld bij het maken van de sessie hebben voorrang op de waarden die zijn ingesteld in de $PSSessionOption voorkeursvariabele en de sessieconfiguratie.
Bijvoorbeeld:
$o = New-PSSessionOption -IdleTimeoutMSec 172800000
New-PSSession -SessionOption $o
Als u de time-out voor inactiviteit van een PSSession wilt wijzigen wanneer de verbinding wordt verbroken, gebruikt u de parameter IdleTimeoutSec van de Disconnect-PSSession cmdlet.
Bijvoorbeeld:
Disconnect-PSSession -IdleTimeoutSec 172800
Als u een sessieconfiguratie wilt maken met een bepaalde time-out voor inactiviteit en maximale time-out voor inactiviteit, gebruikt u de parameters IdleTimeoutSec en MaxIdleTimeoutSec van de New-PSTransportOption cmdlet. Gebruik vervolgens de transportoptie in de waarde van de parameter TransportOption van Register-PSSessionConfiguration.
Bijvoorbeeld:
$o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
Register-PSSessionConfiguration -Name Test -TransportOption $o
Als u de standaard time-out voor inactiviteit en de maximale time-out voor inactiviteit van een sessieconfiguratie wilt wijzigen, gebruikt u de parameters IdleTimeoutSec en MaxIdleTimeoutSec van de New-PSTransportOption cmdlet. Gebruik vervolgens de transportoptie in de waarde van de parameter TransportOption van Set-PSSessionConfiguration.
Bijvoorbeeld:
$o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
Set-PSSessionConfiguration -Name Test -TransportOption $o
Uitvoerbuffermodus
De uitvoerbuffermodus van een PSSession bepaalt hoe opdrachtuitvoer wordt beheerd wanneer de uitvoerbuffer van de PSSession vol is.
In een niet-verbonden sessie bepaalt de uitvoerbuffermodus effectief of de opdracht blijft worden uitgevoerd terwijl de sessie wordt verbroken.
De geldige waarden zijn als volgt:
- Blokkeren. Wanneer de uitvoerbuffer vol is, wordt de uitvoering onderbroken totdat de buffer leeg is. De standaardwaarde.
- Neerzetten. Wanneer de uitvoerbuffer vol is, wordt de uitvoering voortgezet. Wanneer er nieuwe uitvoer wordt gegenereerd, wordt de oudste uitvoer verwijderd.
Met Blokkeren blijven gegevens behouden, maar kan de opdracht worden onderbroken. Met een waarde voor Neerzetten kan de opdracht worden voltooid, hoewel gegevens mogelijk verloren gaan. Wanneer u de waarde Neerzetten gebruikt, moet u de uitvoer van de opdracht omleiden naar een bestand op de schijf. Deze waarde wordt aanbevolen voor niet-verbonden sessies.
De eigenschap OutputBufferingMode van de sessieconfiguratie bepaalt de standaarduitvoerbuffermodus van sessies die gebruikmaken van de sessieconfiguratie.
Als u de waarde van een sessieconfiguratie van de OutputBufferingMode wilt vinden, kunt u een van de volgende opdrachtindelingen gebruiken:
(Get-PSSessionConfiguration <ConfigurationName>).OutputBufferingMode
Get-PSSessionConfiguration | Format-Table Name, OutputBufferingMode
U kunt de standaardwaarde in de sessieconfiguratie overschrijven en de uitvoerbuffermodus van een PSSession instellen wanneer u een PSSession maakt, wanneer u de verbinding verbreekt en wanneer u opnieuw verbinding maakt.
Als u lid bent van de groep Administrators op de externe computer, kunt u de uitvoerbuffermodus van sessieconfiguraties maken en wijzigen.
Als u een PSSession wilt maken met de uitvoerbuffermodus Drop, maakt u een $PSSessionOption voorkeursvariabele waarin de waarde van de eigenschap OutputBufferingModedrop is.
Wanneer u PSSessions maakt, hebben de waarden in $PSSessionOption de variabele voorrang op de waarden in de sessieconfiguratie.
Bijvoorbeeld:
$PSSessionOption = New-PSSessionOption -OutputBufferingMode Drop
Als u een PSSession met een uitvoerbuffermodus van Drop wilt maken, gebruikt u de parameter OutputBufferingMode van de New-PSSessionOption cmdlet om een sessieoptie te maken met de waarde Drop. Gebruik vervolgens de sessieoptie in de waarde van de parameter SessionOption van de New-PSSession of Invoke-Command cmdlets.
De waarden die zijn ingesteld bij het maken van de sessie hebben voorrang op de waarden die zijn ingesteld in de $PSSessionOption voorkeursvariabele en de sessieconfiguratie.
Bijvoorbeeld:
$o = New-PSSessionOption -OutputBufferingMode Drop
New-PSSession -SessionOption $o
Als u de uitvoerbuffermodus van een PSSession wilt wijzigen wanneer de verbinding wordt verbroken, gebruikt u de parameter OutputBufferingMode van de Disconnect-PSSession cmdlet.
Bijvoorbeeld:
Disconnect-PSSession -OutputBufferingMode Drop
Als u de uitvoerbuffermodus van een PSSession wilt wijzigen wanneer u opnieuw verbinding maakt, gebruikt u de parameter OutputBufferingMode van de New-PSSessionOption cmdlet om een sessieoptie te maken met de waarde Drop. Gebruik vervolgens de sessieoptie in de waarde van de parameter SessionOption van Connect-PSSession of Receive-PSSession.
Bijvoorbeeld:
$o = New-PSSessionOption -OutputBufferingMode Drop
Connect-PSSession -ComputerName Server01 -Name Test -SessionOption $o
Als u een sessieconfiguratie wilt maken met een standaarduitvoerbuffermodus van Drop, gebruikt u de parameter OutputBufferingMode van de New-PSTransportOption cmdlet om een transportoptieobject te maken met de waarde Drop. Gebruik vervolgens de transportoptie in de waarde van de parameter TransportOption van Register-PSSessionConfiguration.
Bijvoorbeeld:
$o = New-PSTransportOption -OutputBufferingMode Drop
Register-PSSessionConfiguration -Name Test -TransportOption $o
Als u de standaardmodus voor uitvoerbuffering van een sessieconfiguratie wilt wijzigen, gebruikt u de parameter OutputBufferingMode van de New-PSTransportOption cmdlet om een transportoptie te maken met de waarde Drop. Gebruik vervolgens de optie Transport in de waarde van de parameter SessionOption van Set-PSSessionConfiguration.
Bijvoorbeeld:
$o = New-PSTransportOption -OutputBufferingMode Drop
Set-PSSessionConfiguration -Name Test -TransportOption $o
De verbinding met loopback-sessies verbreken
Loopback-sessies, of lokale sessies, zijn PSSessions die afkomstig zijn en beƫindigen op dezelfde computer. Net als andere PSSessions worden actieve loopbacksessies op de computer op de externe kant van de verbinding (de lokale computer) onderhouden, zodat u de verbinding met loopback-sessies kunt verbreken en opnieuw kunt verbinden.
Loopback-sessies worden standaard gemaakt met een netwerkbeveiligingstoken dat niet toestaat dat opdrachten worden uitgevoerd in de sessie om toegang te krijgen tot andere computers. U kunt opnieuw verbinding maken met loopbacksessies met een netwerkbeveiligingstoken vanaf elke sessie op de lokale computer of een externe computer.
Als u echter de parameter EnableNetworkAccess van de New-PSSession, Enter-PSSessionof Invoke-Command cmdlet gebruikt, wordt de loopback-sessie gemaakt met een interactief beveiligingstoken. Met het interactieve token kunt u opdrachten uitvoeren in de loopbacksessie om gegevens van andere computers op te halen.
U kunt loopback-sessies loskoppelen met interactieve tokens en vervolgens opnieuw verbinding maken vanuit dezelfde sessie of een andere sessie op dezelfde computer. Als u echter schadelijke toegang wilt voorkomen, kunt u opnieuw verbinding maken met loopback-sessies met interactieve tokens alleen vanaf de computer waarop ze zijn gemaakt.
Wachten op taken in niet-verbonden sessies
De Wait-Job cmdlet wacht totdat een taak is voltooid en keert vervolgens terug naar de opdrachtprompt of de volgende opdracht. Retourneert standaard Wait-Job als de sessie waarin een taak wordt uitgevoerd, wordt verbroken. Als u wilt dat de Wait-Job cmdlet wacht totdat de sessie opnieuw is verbonden, gebruikt u de parameter Force in de status Geopend. Zie Wait-Job voor meer informatie.
Robuuste sessies en onbedoelde verbroken verbinding
Een PSSession is mogelijk onbedoeld verbroken vanwege een computerfout of netwerkstoring. PowerShell probeert de PSSession te herstellen, maar het succes is afhankelijk van de ernst en duur van de oorzaak.
De status van een onbedoeld verbroken PSSession is mogelijk verbroken of gesloten, maar is mogelijk ook verbroken. Als de waarde van statusverbroken is, kunt u dezelfde technieken gebruiken om de PSSession te beheren zoals u zou doen als de sessie opzettelijk is verbroken. U kunt bijvoorbeeld de Connect-PSSession cmdlet gebruiken om opnieuw verbinding te maken met de sessie en de Receive-PSSession cmdlet om resultaten op te halen van opdrachten die zijn uitgevoerd terwijl de sessie is verbroken.
Als u de sessie sluit (afsluiten) waarin een PSSession is gemaakt terwijl opdrachten worden uitgevoerd in de PSSession, onderhoudt PowerShell de PSSession in de status Verbroken op de externe computer. Als u de sessie sluit waarin een PSSession is gemaakt, maar er geen opdrachten worden uitgevoerd in de PSSession, probeert PowerShell de PSSession niet te onderhouden.