Share via


about_PSSession_Details

Mis à jour: août 2012

S'applique à: Windows PowerShell 2.0, Windows PowerShell 3.0

RUBRIQUE

about_PSSession_Details

DESCRIPTION COURTE

Fournit des informations détaillées sur les sessions Windows PowerShell et leur rôle dans les commandes distantes.

DESCRIPTION DÉTAILLÉE

Une session est un environnement dans lequel Windows PowerShell s'exécute. Une session est créée automatiquement chaque fois que vous démarrez Windows PowerShell. Vous pouvez créer des sessions supplémentaires, appelées « sessions Windows PowerShell » ou « sessions PowerShell » sur votre ordinateur ou un autre ordinateur.

Contrairement aux sessions que Windows PowerShell crée automatiquement, vous pouvez contrôler et gérer les sessions PowerShell que vous créez.

Les sessions PowerShell jouent un rôle important dans l'informatique de la communication à distance. Lorsque vous créez une session PowerShell connectée à un ordinateur distant, Windows PowerShell établit une connexion permanente à l'ordinateur distant pour prendre en charge la session PowerShell. Vous pouvez utiliser la session PowerShell pour exécuter une série de commandes, fonctions et scripts qui partagent des données.

Cette rubrique fournit des informations détaillées sur les sessions et les sessions PowerShell dans Windows PowerShell. Pour obtenir des informations de base sur les tâches que vous pouvez exécuter avec les sessions, consultez about_PSSessions.

À PROPOS DES SESSIONS

Techniquement, une session est un environnement d'exécution dans lequel Windows PowerShell s'exécute. Chaque session inclut une instance du moteur System.Management.Automation et un programme hôte dans lequel Windows PowerShell s'exécute. L'hôte peut être la console Windows PowerShell traditionnelle ou un autre programme qui exécute des commandes, comme Cmd.exe, ou un programme conçu pour héberger Windows PowerShell, tel que l'environnement d'écriture de scripts intégré de Windows PowerShell. D'un point de vue Windows, une session est un processus Windows sur l'ordinateur cible.

Chaque session est configurée indépendamment. Elle inclut ses propres propriétés, sa propre stratégie d'exécution et ses propres profils. L'environnement existant lors de la création de la session subsiste pendant sa durée de vie, même si vous modifiez l'environnement sur l'ordinateur. Toutes les sessions sont créées dans une portée globale, y compris les sessions que vous créez dans un script.

Vous pouvez exécuter une seule commande (ou pipeline de commande) à la fois dans une session. Une deuxième commande exécutée de façon synchrone (une à la fois) attend jusqu'à quatre minutes que la première commande soit terminée. Une deuxième commande Exécuter de façon asynchrone (simultanément) échoue.

À PROPOS DES SESSIONS POWERSHELL

Une session est créée chaque fois que vous démarrez Windows PowerShell. Et Windows PowerShell crée des sessions temporaires pour exécuter les commandes individuelles. Cependant, vous pouvez aussi créer des sessions (appelées « sessions Windows PowerShell » ou « sessions PowerShell ») que vous contrôlez et gérez.

Les sessions PowerShell sont essentielles pour les commandes distantes. Si vous utilisez le paramètre ComputerName des applets de commande Invoke-Command ou Enter-PSSession, Windows PowerShell établit une session temporaire pour exécuter la commande, puis ferme la session dès que la commande ou la session interactive est terminée.

Cependant, si vous utilisez l'applet de commande New-PSSession pour créer une session PowerShell, Windows PowerShell établit une session persistante sur l'ordinateur distant, au sein de laquelle vous pouvez exécuter plusieurs commandes ou sessions interactives. Les sessions PowerShell que vous créez demeurent ouvertes et disponibles pour être utilisées, jusqu'à ce que vous les supprimiez ou fermiez la session dans laquelle elles ont été créées.

Lorsque vous créez une session PowerShell sur un ordinateur distant, le système crée un processus PowerShell sur l'ordinateur distant et établit une connexion entre l'ordinateur local et le processus sur l'ordinateur distant. Lorsque vous créez une session PowerShell sur l'ordinateur local, le nouveau processus et les connexions sont créés sur l'ordinateur local.

QUAND AI-JE BESOIN D'UNE SESSION POWERSHELL ?

Les applets de commande Invoke-Command et Enter-PSSession ont toutes deux des paramètres ComputerName et Session. Vous pouvez utiliser l'une ou l'autre pour exécuter une commande à distance.

Utilisez le paramètre ComputerName pour exécuter une seule commande ou une série de commandes non liées sur un ou plusieurs ordinateurs.

Pour exécuter des commandes qui partagent des données, vous avez besoin d'une connexion permanente à l'ordinateur distant. Dans ce cas, créez une session PowerShell, puis utilisez le paramètre Session pour exécuter les commandes de la session PowerShell.

La plupart des autres applets de commande qui obtiennent les données à partir d'ordinateurs distants, tels que Get-Process, Get-Service, Get-EventLog et Get-WmiObject, ont uniquement le paramètre ComputerName. Elles utilisent des technologies autres que la communication à distance Windows PowerShell pour collecter les données à distance. Ces applets de commande n'ont pas de paramètre Session, mais vous pouvez utiliser l'applet de commande Invoke-Command pour exécuter ces commandes dans une session PowerShell.

COMMENT CRÉER UNE SESSION POWERSHELL ?

Pour créer une session PSSession, utilisez l'applet de commande New-PSSession. Vous pouvez utiliser New-PSSession pour créer une session PowerShell sur un ordinateur local ou distant.

PUIS-JE CRÉER UNE SESSION POWERSHELL SUR N'IMPORTE QUEL ORDINATEUR ?

Pour créer une session PowerShell connectée à un ordinateur distant, l'ordinateur doit être configuré pour la communication à distance dans Windows PowerShell. L'utilisateur actif doit être membre du groupe Administrateurs sur l'ordinateur distant ou être en mesure de fournir les informations d'identification d'un membre du groupe Administrateurs. Pour plus d'informations, consultez about_Remote_Requirements.

PUIS-JE VOIR MES SESSIONS POWERSHELL DANS D'AUTRES SESSIONS ?

À compter de Windows PowerShell 3.0, le paramètre ComputerName de l'applet de commande Get-PSSession obtient les sessions PowerShell que vous avez créées sur les ordinateurs distants spécifiés.

Les sessions PowerShell actives sont conservées sur l'ordinateur distant (le « côté serveur » d'une connexion) et vous pouvez les obtenir à partir d'une session sur n'importe quel ordinateur.

Par exemple, si vous créez une session PowerShell entre l'ordinateur Server01 et l'ordinateur Server02, puis basculez vers l'ordinateur Server03, vous pouvez utiliser une commande similaire à celle qui suit pour obtenir la session.

      Get-PSSession -ComputerName Server02

Même si vous vous déconnectez de la session, celle-ci est maintenue sur l'ordinateur distant jusqu'à ce que vous la supprimiez ou qu'elle arrive à expiration.

Dans Windows PowerShell 2.0, vous pouvez obtenir uniquement les sessions PowerShell que vous avez créées dans la session active. Il est impossible d'obtenir des sessions PowerShell que vous avez créées dans d'autres sessions.

Pour plus d'informations, consultez Get-PSSession.

PUIS-JE VOIR LES SESSIONS POWERSHELL QUE D'AUTRES ONT CRÉÉES SUR MON ORDINATEUR ?

Vous pouvez obtenir et gérer uniquement les sessions PowerShell créées par d'autres uniquement si vous pouvez fournir les informations d'identification de l'utilisateur ayant créé la session PowerShell ou si la configuration de session que la session PowerShell utilise inclut les informations d'identification RunAs. Sinon, vous ne pouvez obtenir que les sessions PowerShell que vous avez créées, vous y connecter, les utiliser et les gérer.

PUIS-JE ME CONNECTER À UNE SESSION POWERSHELL DEPUIS UN AUTRE ORDINATEUR ?

Depuis Windows PowerShell 3.0, les sessions PowerShell sont indépendantes des sessions dans lesquelles elles ont été créées. Les sessions PowerShell actives sont conservées sur l'ordinateur sur le « côté serveur » ou distant d'une connexion.

Vous pouvez utiliser l'applet de commande Disconnect-PSSession pour vous déconnecter d'une session PowerShell. La session PowerShell est déconnectée de la session locale, mais est conservée sur l'ordinateur distant. Les commandes continuent à s'exécuter dans la session PowerShell déconnectée. Vous pouvez fermer Windows PowerShell et arrêter l'ordinateur d'origine sans interrompre la session PowerShell.

Ensuite, même plusieurs heures plus tard, vous pouvez utiliser l'applet de commande Get-PSSession pour obtenir la session PowerShell et l'applet de commande Connect-PSSession pour vous connecter à la session PowerShell à partir d'une nouvelle session sur un autre ordinateur.

Pour plus d'informations, consultez about_Remote_Disconnected_Sessions (https://go.microsoft.com/fwlink/?LinkID=252847).

QU'ADVIENT-IL DE MA SESSION POWERSHELL SI MON ORDINATEUR S'ARRÊTE ?

Les sessions PowerShell déconnectées sont indépendantes des sessions dans lesquelles elles ont été créées. Si vous déconnectez une session PowerShell, puis fermez l'ordinateur d'origine, la session PowerShell est conservée sur l'ordinateur distant.

En outre, Windows PowerShell tente de récupérer les sessions PowerShell actives déconnectées involontairement (par un redémarrage d'ordinateur, une panne de courant temporaire ou une interruption du réseau, par exemple). Windows PowerShell tente de conserver ou de récupérer la session PowerShell sur un état ouvert, si la session d'origine est toujours disponible, ou sur un état déconnecté dans le cas contraire.

Une session PowerShell « active » est celle qui exécute les commandes. Si une session PowerShell est connectée (non déconnectée) et que les commandes s'exécutent dans la session PowerShell lors de la fermeture de la session connectée, Windows PowerShell tente de maintenir la session PowerShell sur l'ordinateur distant. Cependant, si aucune commande ne s'exécute dans la session PowerShell, Windows PowerShell ferme la session PowerShell lors de la fermeture de la session connectée.

Pour plus d'informations, consultez about_Remote_Disconnected_Sessions (https://go.microsoft.com/fwlink/?LinkID=252847).

PUIS-JE EXÉCUTER UN TRAVAIL EN ARRIÈRE-PLAN DANS UNE SESSION POWERSHELL ?

Oui. Un travail en arrière-plan est une commande qui s'exécute « en arrière-plan » de manière asynchrone sans interagir avec la session active. Lorsque vous envoyez une commande pour démarrer un travail, la commande retourne un objet travail, mais le travail continue de s'exécuter en arrière-plan jusqu'à ce qu'il soit terminé.

Pour démarrer un travail en arrière-plan sur un ordinateur local, utilisez la commande Start-Job. Vous pouvez exécuter le travail en arrière-plan dans une connexion temporaire (à l'aide du paramètre ComputerName) ou dans une session PowerShell (à l'aide du paramètre Session).

Pour démarrer un travail en arrière-plan sur un ordinateur distant, utilisez l'applet de commande Invoke-Command avec son paramètre AsJob ou utiliser l'applet de commande Invoke-Command pour exécuter une commande Start-Job sur un ordinateur distant. Lorsque vous utilisez le paramètre AsJob, vous pouvez utiliser les paramètres ComputerName ou Session.

Lorsque vous utilisez Invoke-Command pour exécuter une commande Start-Job, vous devez exécuter la commande dans une session PowerShell. Si vous utilisez le paramètre ComputerName, Windows PowerShell termine la connexion au retour de l'objet travail, et le travail est interrompu.

Pour plus d'informations, consultez about_Jobs.

PUIS-JE EXÉCUTER UNE SESSION INTERACTIVE ?

Oui. Pour démarrer une session interactive avec un ordinateur distant, utilisez l'applet de commande Enter-PSSession. Dans une session interactive, les commandes que vous tapez s'exécutent sur l'ordinateur distant, comme si vous les tapiez directement sur celui-ci.

Vous pouvez exécuter une session interactive dans une session temporaire (à l'aide du paramètre ComputerName) ou dans une session PowerShell (à l'aide du paramètre Session). Si vous utilisez une session PowerShell, celle-ci conserve les données des commandes précédentes, ainsi que toutes les données générées au cours de la session interactive en vue d'une utilisation dans les commandes ultérieures.

Lorsque vous terminez la session interactive, la session PowerShell demeure ouverte et disponible.

Pour plus d'informations, consultez Enter-PSSession et Exit-PSSession.

DOIS-JE SUPPRIMER LES SESSIONS POWERSHELL ?

Oui. Une session PowerShell est un processus, lequel correspond à un environnement autonome qui utilise la mémoire et autres ressources même lorsque vous ne l'employez pas. Lorsque vous en avez terminé avec une session PowerShell, supprimez-la. Si vous créez plusieurs sessions PowerShell, fermez celles que vous n'utilisez pas et conservez uniquement celles en cours d'utilisation.

Pour supprimer des sessions PowerShell, utilisez l'applet de commande Remove-PSSession. Elle supprime les sessions PowerShell et libère toutes les ressources qu'elles utilisaient.

Vous pouvez également utiliser le paramètre IdleTimeOut de New-PSSessionOption pour fermer une session PSSession inactive après un intervalle que vous spécifiez. Pour plus d'informations, consultez New-PSSessionOption.

Si vous enregistrez un objet PSSession dans une variable, puis le supprimez ou le laissez expirer, la variable contient toujours l'objet PSSession, mais la session PowerShell n'est pas active et elle ne peut pas être utilisée ou réparée.

TOUTES LES SESSIONS ET SESSIONS POWERSHELL SONT-ELLES SIMILAIRES ?

Non. Les développeurs peuvent créer des sessions personnalisées qui incluent uniquement les fournisseurs et les applets de commande sélectionnés. Si une commande fonctionne dans une session, mais pas dans une autre, il se peut que la session soit limitée.

VOIR AUSSI

about_Jobs

about_PSSessions

about_Remote

about_Remote_Disconnected_Sessions

about_Remote_Requirements

Invoke-Command

New-PSSession

Get-PSSession

Remove-PSSession

Enter-PSSession

Exit-PSSession