about_Remote_Disconnected_Sessions

Description courte

Explique comment déconnecter et se reconnecter à une session PowerShell (PSSession).

Description longue

À compter de PowerShell 3.0, vous pouvez vous déconnecter d’une session PSSession et vous reconnecter à la session PSSession sur le même ordinateur ou un autre ordinateur. L’état de session est conservé et les commandes de la session PSSession continuent à s’exécuter pendant la déconnexion de la session.

La fonctionnalité Sessions déconnectées est disponible uniquement lorsque l’ordinateur distant est un ordinateur Windows exécutant PowerShell 3.0 ou une version ultérieure et que l’ordinateur local exécute Windows.

La fonctionnalité Sessions déconnectées vous permet de fermer la session dans laquelle une session PSSession a été créée, voire de fermer PowerShell, et d’arrêter l’ordinateur, sans interrompre l’exécution des commandes dans la session PSSession. Les sessions déconnectées sont utiles pour l’exécution de commandes qui prennent un temps prolongé et offrent le temps et la flexibilité des appareils dont ont besoin les professionnels de l’informatique.

Vous ne pouvez pas vous déconnecter d’une session interactive démarrée avec l’applet Enter-PSSession de commande.

Vous pouvez utiliser des sessions déconnectées pour gérer les sessions PSSession qui ont été déconnectées involontairement en raison d’une panne d’ordinateur ou de réseau.

Dans le monde réel, la fonctionnalité Sessions déconnectées vous permet de commencer à résoudre un problème, d’attirer votre attention sur un problème de priorité plus élevée, puis de reprendre le travail sur la solution, même sur un autre ordinateur dans un autre emplacement.

Applets de commande de session déconnectées

Les applets de commande suivantes prennent en charge la fonctionnalité Sessions déconnectées :

  • Connect-PSSession: se connecte à une session PSSession déconnectée.
  • Disconnect-PSSession: déconnecte une session PSSession.
  • Get-PSSession: obtient les sessions PSSession sur l’ordinateur local ou sur les ordinateurs distants.
  • Receive-PSSession: obtient les résultats des commandes qui ont été exécutées dans des sessions déconnectées.
  • Invoke-Command: le paramètre InDisconnectedSession crée une session PSSession et se déconnecte immédiatement.

Fonctionnement de la fonctionnalité Sessions déconnectées

À compter de PowerShell 3.0, les sessions PSSession sont indépendantes des sessions dans lesquelles elles sont créées. Les sessions PSSession actives sont conservées sur l’ordinateur distant ou côté serveur de la connexion, même si la session dans laquelle la session PSSession a été créée est fermée et que l’ordinateur d’origine est arrêté ou déconnecté du réseau.

Dans PowerShell 2.0, la session PSSession est supprimée de l’ordinateur distant lorsqu’elle est déconnectée de la session d’origine ou de la session dans laquelle elle a été créée se termine.

Lorsque vous déconnectez une session PSSession, la session PSSession reste active et est conservée sur l’ordinateur distant. L’état de session passe de l’exécution à déconnecté. Vous pouvez vous reconnecter à une session PSSession déconnectée de la session active ou d’une autre session sur le même ordinateur ou à partir d’un autre ordinateur. L’ordinateur distant qui gère la session doit être en cours d’exécution et être connecté au réseau.

Les commandes d’une session PSSession déconnectée continuent de s’exécuter sans interruption sur l’ordinateur distant jusqu’à ce que la commande se termine ou que la mémoire tampon de sortie se remplit. Pour empêcher une mémoire tampon de sortie complète de suspendre une commande, utilisez le paramètre OutputBufferingMode des applets de commande ou des applets de Disconnect-PSSessionNew-PSSessionOptionNew-PSTransportOption commande.

Les sessions déconnectées sont conservées à l’état déconnecté sur l’ordinateur distant. Ils sont disponibles pour vous reconnecter jusqu’à ce que vous supprimiez la session PSSession, par exemple à l’aide de l’applet Remove-PSSession de commande, ou jusqu’à ce que le délai d’inactivité de la session PSSession expire. Vous pouvez ajuster le délai d’inactivité d’une session PSSession à l’aide des paramètres IdleTimeoutSec ou IdleTimeout de l’applet Disconnect-PSSessionNew-PSSessionOptionde commande, ou New-PSTransportOption des applets de commande.

Un autre utilisateur peut se connecter aux sessions PSSession que vous avez créées, mais uniquement s’il peut fournir les informations d’identification utilisées pour créer la session ou utiliser les RunAs informations d’identification de la configuration de session.

Comment obtenir des sessions PSSession

À compter de PowerShell 3.0, l’applet Get-PSSession de commande obtient des sessions PSSession sur l’ordinateur local et les ordinateurs distants. Il peut également obtenir des sessions PSSession qui ont été créées dans la session active.

Pour obtenir des sessions PSSession sur l’ordinateur local ou les ordinateurs distants, utilisez les paramètres ComputerName ou ConnectionUri . Sans paramètres, Get-PSSession obtient PSSession qui ont été créés dans la session locale, quel que soit l’endroit où ils se terminent.

Lorsque vous obtenez des sessions PSSession, n’oubliez pas de les rechercher sur l’ordinateur sur lequel ils sont conservés, c’est-à-dire l’ordinateur distant ou côté serveur.

Par exemple, si vous créez une session PSSession sur l’ordinateur Server01, récupérez la session à partir de l’ordinateur Server01. Si vous créez une session PSSession à partir d’un autre ordinateur vers l’ordinateur local, obtenez la session à partir de l’ordinateur local.

La séquence de commandes suivante montre comment Get-PSSession fonctionne.

La première commande crée une session sur l’ordinateur Server01. La session réside sur l’ordinateur Server01.

New-PSSession -ComputerName Server01
Id Name      ComputerName  State    ConfigurationName     Availability
-- ----      ------------  -----    -----------------     ------------
 2 Session2  Server01      Opened   Microsoft.PowerShell     Available

Pour obtenir la session, utilisez le paramètre ComputerName dont Get-PSSession la valeur est Server01.

Get-PSSession -ComputerName Server01
Id Name      ComputerName  State    ConfigurationName     Availability
-- ----      ------------  -----    -----------------     ------------
 2 Session2  Server01      Opened   Microsoft.PowerShell     Available

Si la valeur du paramètre ComputerName de Get-PSSession est localhost, Get-PSSession obtient les sessions PSSession qui se terminent et sont conservées sur l’ordinateur local. Il n’obtient pas les sessions PSSession sur l’ordinateur Server01, même si elles ont été démarrées sur l’ordinateur local.

Get-PSSession -ComputerName localhost

Pour obtenir des sessions créées dans la session active, utilisez l’applet Get-PSSession de commande sans paramètres. Dans cet exemple, Get-PSSession obtient la session PSSession créée dans la session active et se connecte à l’ordinateur Server01.

Get-PSSession
Id Name      ComputerName  State    ConfigurationName     Availability
-- ----      ------------  -----    -----------------     ------------
 2 Session2  Server01      Opened   Microsoft.PowerShell     Available

Comment déconnecter des sessions

Pour déconnecter une session PSSession, utilisez l’applet de Disconnect-PSSession commande. Pour identifier la session PSSession, utilisez le paramètre Session ou pipelinez une session PSSession à Disconnect-PSSessionpartir des applets de commande ou Get-PSSession vers New-PSSession .

La commande suivante déconnecte la session PSSession sur l’ordinateur Server01. Notez que la valeur de la propriété State est Déconnectée et que la disponibilité n’est pas.

Get-PSSession -ComputerName Server01 | Disconnect-PSSession
Id Name      ComputerName  State         ConfigurationName     Availability
-- ----      ------------  -----         -----------------     ------------
 2 Session2  Server01      Disconnected  Microsoft.PowerShell          None

Pour créer une session déconnectée, utilisez le paramètre InDisconnectedSession de l’applet Invoke-Command de commande. Il crée une session, démarre la commande et se déconnecte immédiatement avant que la commande puisse retourner n’importe quelle sortie.

La commande suivante exécute une Get-WinEvent commande dans une session déconnectée sur l’ordinateur distant Server02.

Invoke-Command -ComputerName Server02 -InDisconnectedSession -ScriptBlock {
   Get-WinEvent -LogName "*PowerShell*" }
Id Name      ComputerName  State         ConfigurationName     Availability
-- ----      ------------  -----         -----------------     ------------
 4 Session3  Server02      Disconnected  Microsoft.PowerShell          None

Comment se connecter à des sessions déconnectées

Vous pouvez vous connecter à n’importe quelle session PSSession déconnectée disponible dans laquelle vous avez créé la session PSSession ou à partir d’autres sessions sur l’ordinateur local ou d’autres ordinateurs.

Vous pouvez créer une session PSSession, exécuter des commandes dans la session PSSession, vous déconnecter de la session PSSession, fermer PowerShell et arrêter l’ordinateur. Quelques heures plus tard, vous pouvez ouvrir un autre ordinateur, obtenir la session PSSession, y accéder et obtenir les résultats des commandes qui s’exécutaient dans la session PSSession pendant qu’elle était déconnectée. Vous pouvez ensuite exécuter d’autres commandes dans la session.

Pour connecter une session PSSession déconnectée, utilisez l’applet de Connect-PSSession commande. Utilisez les paramètres ComputerName ou ConnectionUri pour identifier la session PSSession ou pipeliner une session PSSession à Connect-PSSessionpartir de Get-PSSession .

La commande suivante obtient les sessions sur l’ordinateur Server02. La sortie comprend deux sessions déconnectées, qui sont toutes deux disponibles.

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

La commande suivante se connecte à Session2. La session PSSession est désormais ouverte et disponible.

Connect-PSSession -ComputerName Server02 -Name Session2
Id Name      ComputerName    State    ConfigurationName     Availability
-- ----      ------------    -----    -----------------     ------------
 2 Session2  juneb-srv8320   Opened   Microsoft.PowerShell     Available

Comment obtenir les résultats

Pour obtenir les résultats des commandes exécutées dans une session PSSession déconnectée, utilisez l’applet Receive-PSSession de commande.

Vous pouvez utiliser Receive-PSSession plutôt que d’utiliser l’applet de Connect-PSSession commande. Si la session est déjà reconnectée, Receive-PSSession obtient les résultats des commandes qui ont été exécutées lors de la déconnexion de la session. Si la session PSSession est toujours déconnectée, Receive-PSSession se connecte à celle-ci, puis obtient les résultats des commandes qui ont été exécutées pendant sa déconnexion.

Receive-PSSession peut retourner les résultats d’un travail (de manière asynchrone) ou au programme hôte (de façon synchrone). Utilisez le paramètre OutTarget pour sélectionner Job ou Host. La valeur par défaut est Host. Toutefois, si la commande reçue a été démarrée dans la session active en tant que travail, elle est retournée en tant que travail par défaut.

La commande suivante utilise l’applet Receive-PSSession de commande pour se connecter à la session PSSession sur l’ordinateur Server02 et obtenir les résultats de la Get-WinEvent commande exécutée dans la session Session3. La commande utilise le paramètre OutTarget pour obtenir les résultats dans un travail.

Receive-PSSession -ComputerName Server02 -Name Session3 -OutTarget Job
Id   Name   PSJobTypeName   State         HasMoreData     Location
--   ----   -------------   -----         -----------     --------
 3   Job3   RemoteJob       Running       True            Server02

Pour obtenir les résultats du travail, utilisez l’applet Receive-Job de commande.

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

Propriétés d’état et de disponibilité

Les propriétés d’état et de disponibilité d’une session PSSession déconnectée vous indiquent si la session est disponible pour vous y reconnecter.

Lorsqu’une session PSSession est connectée à la session active, son état est Ouvert et sa disponibilité est Disponible. Lorsque vous vous déconnectez de la session PSSession, l’état PSSession est déconnecté et sa disponibilité est None.

La valeur de la propriété State dépend de la session active. La valeur Disconnected signifie que la session PSSession n’est pas connectée à la session active. Toutefois, cela ne signifie pas que la session PSSession est déconnectée de toutes les sessions. Elle peut être connectée à une autre session.

Pour déterminer si vous pouvez vous connecter ou vous reconnecter à la session PSSession, utilisez la propriété Availability . La valeur None indique que vous pouvez vous connecter à la session. La valeur Busy indique que vous ne pouvez pas vous connecter à la session PSSession, car elle est connectée à une autre session.

L’exemple suivant est exécuté dans deux sessions PowerShell sur le même ordinateur. Notez les valeurs de modification des propriétés d’état et de disponibilité dans chaque session, car la session PSSession est déconnectée et reconnectée.

# 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

Les sessions déconnectées sont conservées sur l’ordinateur distant jusqu’à ce que vous les supprimiez, par exemple à l’aide de l’applet Remove-PSSession de commande ou qu’elles expirent. La propriété IdleTimeout d’une session PSSession détermine la durée pendant laquelle une session déconnectée est conservée avant sa suppression.

Les sessions PSSession sont inactives lorsque le thread de pulsation ne reçoit aucune réponse. La déconnexion d’une session le rend inactive et démarre l’horloge IdleTimeout , même si les commandes sont toujours en cours d’exécution dans la session déconnectée. PowerShell considère que les sessions déconnectées sont actives, mais inactives.

Lors de la création et de la déconnexion de sessions, vérifiez que le délai d’inactivité dans la session PSSession est suffisamment long pour maintenir la session en fonction de vos besoins, mais pas si longtemps qu’elle consomme des ressources inutiles sur l’ordinateur distant.

La propriété IdleTimeoutMs de la configuration de session détermine le délai d’inactivité par défaut des sessions qui utilisent la configuration de session. Vous pouvez remplacer la valeur par défaut, mais la valeur que vous utilisez ne peut pas dépasser la propriété MaxIdleTimeoutMs de la configuration de session.

Pour rechercher la valeur des valeurs IdleTimeoutMs et MaxIdleTimeoutMs d’une configuration de session, utilisez le format de commande suivant.

Get-PSSessionConfiguration |
  Format-Table Name, IdleTimeoutMs, MaxIdleTimeoutMs

Vous pouvez remplacer la valeur par défaut dans la configuration de session et définir le délai d’inactivité d’une session PSSession lorsque vous créez une session PSSession et lorsque vous vous déconnectez.

Si vous êtes membre du groupe Administrateurs sur l’ordinateur distant, vous pouvez créer et modifier les propriétés IdleTimeoutMs et MaxIdleTimeoutMs des configurations de session.

Valeurs de délai d’inactivité

La valeur de délai d’inactivité des configurations de session et des options de session est en millisecondes. La valeur du délai d’inactivité des sessions et des options de configuration de session est en secondes.

Vous pouvez définir le délai d’inactivité d’une session PSSession lorsque vous créez la session PSSession (New-PSSession, Invoke-Command) et lorsque vous vous déconnectez de celle-ci (Disconnect-PSSession). Toutefois, vous ne pouvez pas modifier la valeur IdleTimeout lorsque vous vous connectez à la session PSSession (Connect-PSSession) ou obtenir des résultats (Receive-PSSession).

Les Connect-PSSession applets de commande et Receive-PSSession les applets de commande ont un paramètre SessionOption qui accepte un objet SessionOption , tel qu’un objet retourné par l’applet de New-PSSessionOption commande. La valeur IdleTimeout dans l’objet SessionOption et la valeur IdleTimeout dans la $PSSessionOption variable de préférence ne modifient pas la valeur de IdleTimeout de la session PSSession dans une Connect-PSSession ou Receive-PSSession une commande.

Pour créer une session PSSession avec une valeur de délai d’inactivité particulière, créez une $PSSessionOption variable de préférence. Définissez la valeur de la propriété IdleTimeout sur la valeur souhaitée (en millisecondes).

Lorsque vous créez des sessions PSSession, les valeurs de la $PSSessionOption variable sont prioritaires sur les valeurs de la configuration de session.

Par exemple, la commande suivante définit un délai d’inactivité de 48 heures :

$PSSessionOption = New-PSSessionOption -IdleTimeoutMSec 172800000

Pour créer une session PSSession avec une valeur de délai d’inactivité particulière, utilisez le paramètre IdleTimeoutMSec de l’applet New-PSSessionOption de commande. Utilisez ensuite l’option de session dans la valeur du paramètre SessionOption des applets de commande ou Invoke-Command des New-PSSession applets de commande.

Les valeurs définies lors de la création de la session sont prioritaires sur les valeurs définies dans la $PSSessionOption variable de préférence et la configuration de session.

Par exemple :

$o = New-PSSessionOption -IdleTimeoutMSec 172800000
New-PSSession -SessionOption $o

Pour modifier le délai d’inactivité d’une session PSSession lors de la déconnexion, utilisez le paramètre IdleTimeoutSec de l’applet Disconnect-PSSession de commande.

Par exemple :

Disconnect-PSSession -IdleTimeoutSec 172800

Pour créer une configuration de session avec un délai d’inactivité particulier et un délai d’inactivité maximal, utilisez les paramètres IdleTimeoutSec et MaxIdleTimeoutSec de l’applet New-PSTransportOption de commande. Utilisez ensuite l’option de transport dans la valeur du paramètre TransportOption de Register-PSSessionConfiguration.

Par exemple :

$o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
Register-PSSessionConfiguration -Name Test -TransportOption $o

Pour modifier le délai d’inactivité par défaut et le délai d’inactivité maximal d’une configuration de session, utilisez les paramètres IdleTimeoutSec et MaxIdleTimeoutSec de l’applet New-PSTransportOption de commande. Utilisez ensuite l’option de transport dans la valeur du paramètre TransportOption de Set-PSSessionConfiguration.

Par exemple :

$o = New-PSTransportOption -IdleTimeoutSec 172800 -MaxIdleTimeoutSec 259200
Set-PSSessionConfiguration -Name Test -TransportOption $o

Mode de mise en mémoire tampon de sortie

Le mode de mise en mémoire tampon de sortie d’une session PSSession détermine la façon dont la sortie de commande est gérée lorsque la mémoire tampon de sortie de la session PSSession est pleine.

Dans une session déconnectée, le mode de mise en mémoire tampon de sortie détermine efficacement si la commande continue à s’exécuter pendant la déconnexion de la session.

Valeurs valides comme suit :

  • Bloquer. Quand la mémoire tampon de sortie est pleine, l'exécution est suspendue jusqu'à ce que la mémoire tampon soit effacée. Valeur par défaut.
  • Supprimer. Quand la mémoire tampon de sortie est pleine, l'exécution se poursuit. À mesure que la nouvelle sortie est générée, la sortie la plus ancienne est ignorée.

Le bloc conserve les données, mais peut interrompre la commande. La valeur Drop permet l'exécution de la commande, même si des données peuvent être perdues. Quand vous utilisez la valeur Drop, redirigez la sortie de la commande vers un fichier sur disque. Cette valeur est recommandée pour les sessions déconnectées.

La propriété OutputBufferingMode de la configuration de session détermine le mode de mise en mémoire tampon de sortie par défaut des sessions qui utilisent la configuration de session.

Pour trouver la valeur d’une configuration de session du OutputBufferingMode, vous pouvez utiliser l’un des formats de commande suivants :

(Get-PSSessionConfiguration <ConfigurationName>).OutputBufferingMode
Get-PSSessionConfiguration | Format-Table Name, OutputBufferingMode

Vous pouvez remplacer la valeur par défaut dans la configuration de session et définir le mode de mise en mémoire tampon de sortie d’une session PSSession lorsque vous créez une session PSSession, lorsque vous vous déconnectez et lorsque vous vous reconnectez.

Si vous êtes membre du groupe Administrateurs sur l’ordinateur distant, vous pouvez créer et modifier le mode de mise en mémoire tampon de sortie des configurations de session.

Pour créer une session PSSession avec un mode de mise en mémoire tampon de sortie de Drop, créez une $PSSessionOption variable de préférence dans laquelle la valeur de la propriété OutputBufferingMode est Drop.

Lorsque vous créez des sessions PSSession, les valeurs de la $PSSessionOption variable sont prioritaires sur les valeurs de la configuration de session.

Par exemple :

$PSSessionOption = New-PSSessionOption -OutputBufferingMode Drop

Pour créer une session PSSession avec un mode de mise en mémoire tampon de sortie de Drop, utilisez le paramètre OutputBufferingMode de l’applet New-PSSessionOption de commande pour créer une option de session avec la valeur Drop. Utilisez ensuite l’option de session dans la valeur du paramètre SessionOption des applets de commande ou Invoke-Command des New-PSSession applets de commande.

Les valeurs définies lors de la création de la session sont prioritaires sur les valeurs définies dans la $PSSessionOption variable de préférence et la configuration de session.

Par exemple :

$o = New-PSSessionOption -OutputBufferingMode Drop
New-PSSession -SessionOption $o

Pour modifier le mode de mise en mémoire tampon de sortie d’une session PSSession lors de la déconnexion, utilisez le paramètre OutputBufferingMode de l’applet Disconnect-PSSession de commande.

Par exemple :

Disconnect-PSSession -OutputBufferingMode Drop

Pour modifier le mode de mise en mémoire tampon de sortie d’une session PSSession lors de la reconnexion, utilisez le paramètre OutputBufferingMode de l’applet New-PSSessionOption de commande pour créer une option de session avec la valeur Drop. Utilisez ensuite l’option de session dans la valeur du paramètre SessionOption de Connect-PSSession ou Receive-PSSession.

Par exemple :

$o = New-PSSessionOption -OutputBufferingMode Drop
Connect-PSSession -ComputerName Server01 -Name Test -SessionOption $o

Pour créer une configuration de session avec un mode de mise en mémoire tampon de sortie par défaut de Drop, utilisez le paramètre OutputBufferingMode de l’applet New-PSTransportOption de commande pour créer un objet d’option de transport avec la valeur Drop. Utilisez ensuite l’option de transport dans la valeur du paramètre TransportOption de Register-PSSessionConfiguration.

Par exemple :

$o = New-PSTransportOption -OutputBufferingMode Drop
Register-PSSessionConfiguration -Name Test -TransportOption $o

Pour modifier le mode de mise en mémoire tampon de sortie par défaut d’une configuration de session, utilisez le paramètre OutputBufferingMode de l’applet New-PSTransportOption de commande pour créer une option de transport avec la valeur Drop. Utilisez ensuite l’option Transport dans la valeur du paramètre SessionOption de Set-PSSessionConfiguration.

Par exemple :

$o = New-PSTransportOption -OutputBufferingMode Drop
Set-PSSessionConfiguration -Name Test -TransportOption $o

Déconnexion des sessions de bouclage

Les sessions de bouclage ou les sessions locales sont des sessions PSSession qui proviennent et se terminent sur le même ordinateur. Comme les autres sessions PSSession, les sessions de bouclage actives sont conservées sur l’ordinateur à la fin distante de la connexion (l’ordinateur local), ce qui vous permet de vous déconnecter et de vous reconnecter aux sessions de bouclage.

Par défaut, les sessions de bouclage sont créées avec un jeton de sécurité réseau qui n’autorise pas l’exécution de commandes dans la session pour accéder à d’autres ordinateurs. Vous pouvez vous reconnecter à des sessions de bouclage qui ont un jeton de sécurité réseau à partir de n’importe quelle session sur l’ordinateur local ou un ordinateur distant.

Toutefois, si vous utilisez le paramètre EnableNetworkAccess du , Enter-PSSessionou Invoke-Command de l’applet New-PSSessionde commande, la session de bouclage est créée avec un jeton de sécurité interactif. Le jeton interactif permet aux commandes qui s’exécutent dans la session de bouclage d’obtenir des données à partir d’autres ordinateurs.

Vous pouvez déconnecter des sessions de bouclage avec des jetons interactifs, puis les reconnecter à partir de la même session ou d’une autre session sur le même ordinateur. Toutefois, pour empêcher l’accès malveillant, vous pouvez vous reconnecter aux sessions de bouclage avec des jetons interactifs uniquement à partir de l’ordinateur sur lequel ils ont été créés.

Attente de travaux dans des sessions déconnectées

L’applet Wait-Job de commande attend la fin d’un travail, puis retourne à l’invite de commandes ou à la commande suivante. Par défaut, Wait-Job retourne si la session dans laquelle un travail est en cours d’exécution est déconnecté. Pour diriger l’applet Wait-Job de commande jusqu’à ce que la session soit reconnectée, à l’état Ouvert , utilisez le paramètre Force . Pour plus d’informations, consultez Wait-Job.

Sessions robustes et déconnexion involontaire

Une session PSSession peut être déconnectée involontairement en raison d’une défaillance de l’ordinateur ou d’une panne réseau. PowerShell tente de récupérer la session PSSession, mais sa réussite dépend de la gravité et de la durée de la cause.

L’état d’une session PSSession non intentionnellement déconnectée peut être rompue ou fermée, mais elle peut également être déconnectée. Si la valeur de l’état est déconnectée, vous pouvez utiliser les mêmes techniques pour gérer la session PSSession que si la session était déconnectée intentionnellement. Par exemple, vous pouvez utiliser l’applet Connect-PSSession de commande pour vous reconnecter à la session et l’applet Receive-PSSession de commande pour obtenir les résultats des commandes exécutées pendant la déconnexion de la session.

Si vous fermez (quittez) la session dans laquelle une session PSSession a été créée pendant que les commandes s’exécutent dans la session PSSession, PowerShell conserve la session PSSession dans l’état déconnecté sur l’ordinateur distant. Si vous fermez (quittez) la session dans laquelle une session PSSession a été créée, mais qu’aucune commande n’est en cours d’exécution dans la session PSSession, PowerShell ne tente pas de conserver la session PSSession.

Voir aussi