Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Brève description
Décrit les sessions Windows PowerShell (PSSessions) et explique comment établir une connexion persistante à un ordinateur distant.
Description longue
Pour exécuter des commandes Windows PowerShell sur un ordinateur distant, vous pouvez utiliser le paramètre ComputerName d’une applet de commande, ou vous pouvez créer une session Windows PowerShell (PSSession) et exécuter des commandes dans PSSession.
Lorsque vous créez une session PSSession, Windows PowerShell établit une connexion persistante à l’ordinateur distant. Utilisez une session PSSession pour exécuter une série de commandes associées sur un ordinateur distant. Les commandes qui s’exécutent dans la même session PSSession peuvent partager des données, telles que les valeurs de variables, d’alias et de fonctions.
Vous pouvez également créer une session PSSession sur l’ordinateur local et exécuter des commandes dans celle-ci. Une PSSession locale utilise l’infrastructure de communication à distance Windows PowerShell pour créer et gérer la PSSession.
À partir de Windows PowerShell 3.0, les PSSessions sont indépendantes des sessions dans lesquelles elles sont créées. Les sessions PSS actives sont maintenues sur l'ordinateur distant (ou l'ordinateur à l'extrémité distante ou « côté serveur » de la connexion). Par conséquent, vous pouvez vous déconnecter de la PSSession et vous y reconnecter ultérieurement à partir du même ordinateur ou d’un autre ordinateur.
Cette rubrique explique comment créer, utiliser, obtenir et supprimer des sessions PSSession. Pour des informations plus détaillées, voir about_PSSession_Details.
Remarque : PSSessions utilise l’infrastructure de communication à distance Windows PowerShell. Pour utiliser les sessions PSS, l'ordinateur local et l'ordinateur distant doivent être configurés pour le remoting. Pour plus d'informations, voir about_Remote_Requirements.
Dans Windows Vista et les versions ultérieures de Windows, pour créer une PSSession sur un ordinateur local, vous devez démarrer Windows PowerShell avec l’option « Exécuter en tant qu’administrateur ».
Qu’est-ce qu’une session ?
Une session est un environnement dans lequel Windows PowerShell s’exécute.
Chaque fois que vous démarrez Windows PowerShell, une session est créée pour vous et vous pouvez exécuter des commandes dans la session. Vous pouvez également ajouter des éléments à votre session, tels que des modules et des composants logiciels enfichables, et créer des éléments, tels que des variables, des fonctions et des alias. Ces éléments existent uniquement dans la session et sont supprimés lorsque la session se termine.
Vous pouvez également créer des sessions gérées par l’utilisateur, appelées « sessions Windows PowerShell » ou « PSSessions », sur l’ordinateur local ou sur un ordinateur distant. Comme la session par défaut, vous pouvez exécuter des commandes dans une session PSSession et ajouter et créer des éléments. Toutefois, contrairement à la session qui démarre automatiquement, vous pouvez contrôler les sessions PSSession que vous créez. Vous pouvez obtenir, créer, configurer et supprimer ces derniers, les déconnecter et les reconnecter, puis exécuter plusieurs commandes dans la même session PSSession. La session PSSession reste disponible jusqu’à ce que vous la supprimiez ou qu’elle expire.
En règle générale, vous créez une session PSSession pour exécuter une série de commandes associées sur un ordinateur distant. Lorsque vous créez une PSSession sur un ordinateur distant, Windows PowerShell établit une connexion persistante à l’ordinateur distant pour prendre en charge la session.
Si vous utilisez le paramètre ComputerName de l’applet Invoke-Command de commande ou Enter-PSSession pour exécuter une commande à distance ou pour démarrer une session interactive, Windows PowerShell crée une session temporaire sur l’ordinateur distant et ferme la session dès que la commande est terminée ou dès que la session interactive se termine. Vous ne pouvez pas contrôler ces sessions temporaires et vous ne pouvez pas les utiliser pour plusieurs commandes ou une session interactive unique.
Dans Windows PowerShell, la « session en cours » est la session dans laquelle vous travaillez. La « session active » peut faire référence à n’importe quelle session, y compris une session temporaire ou une session PSSession.
Pourquoi utiliser une session PSSession ?
Utilisez une session PSSession lorsque vous avez besoin d’une connexion persistante à un ordinateur distant. Avec une session PSSession, vous pouvez exécuter une série de commandes qui partagent des données, telles que la valeur des variables, le contenu d’une fonction ou la définition d’un alias.
Vous pouvez exécuter des commandes distantes sans créer de session PSSession. Utilisez le paramètre ComputerName des applets de commande à distance pour exécuter une seule commande ou une série de commandes non liées sur un ou plusieurs ordinateurs.
Lorsque vous utilisez le paramètre ComputerName de Invoke-Command ou Enter-PSSession, Windows PowerShell établit une connexion temporaire à l’ordinateur distant, puis ferme la connexion dès que la commande est terminée. Tous les éléments de données que vous créez sont perdus lorsque la connexion est fermée.
D'autres cmdlets ayant un paramètre ComputerName, telles que Get-Eventlog et Get-WmiObject, utilisent différentes technologies de remoting pour collecter des données. Aucun ne crée une connexion persistante comme une session PSSession.
Comment créer une session PSSession
Pour créer une session PSSession, utilisez l’applet de commande New-PSSession. Pour créer la session PSSession sur un ordinateur distant, utilisez le paramètre ComputerName de l’applet de commande New-PSSession.
Par exemple, la commande suivante crée une session PSSession sur l’ordinateur Server01.
New-PSSession -ComputerName Server01
Lorsque vous envoyez la commande, New-PSSession crée la session PSSession et retourne un objet qui représente la session PSSession. Vous pouvez enregistrer l’objet dans une variable lorsque vous créez la session PSSession, ou vous pouvez utiliser une commande Get-PSSession pour obtenir la session PSSession ultérieurement.
Par exemple, la commande suivante crée une session PSSession sur l’ordinateur Server01 et enregistre l’objet résultant dans la variable $ps.
$ps = New-PSSession -ComputerName Server01
Guide pratique pour créer des sessions PSSession sur plusieurs ordinateurs
Pour créer des sessions PSSession sur plusieurs ordinateurs, utilisez le paramètre ComputerName de l’applet de commande New-PSSession. Tapez les noms des ordinateurs distants dans une liste séparée par des virgules.
Par exemple, pour créer des sessions PSSession sur les ordinateurs Server01, Server02 et Server03, tapez :
New-PSSession -ComputerName Server01, Server02, Server03
New-PSSession crée une session PSSession sur chacun des ordinateurs distants.
Comment obtenir des PSSessions
Pour obtenir les sessions PSSession créées dans votre session active, utilisez l’applet de commande Get-PSSession sans le paramètre ComputerName.
Get-PSSession retourne le même type d’objet que celui retourné par New-PSSession.
La commande suivante obtient toutes les sessions PSSession qui ont été créées dans la session active.
Get-PSSession
L’affichage par défaut des sessions PSSession affiche leur ID et un nom d’affichage par défaut. Vous pouvez attribuer un autre nom d’affichage lorsque vous créez la session.
Id Name ComputerName State ConfigurationName
--- ---- ------------ ----- ---------------------
1 Session1 Server01 Opened Microsoft.PowerShell
2 Session2 Server02 Opened Microsoft.PowerShell
3 Session3 Server03 Opened Microsoft.PowerShell
Vous pouvez également enregistrer les sessions PSSession dans une variable. La commande suivante obtient les sessions PSSession et les enregistre dans la variable $ps 123.
$ps123 = Get-PSSession
Lorsque vous utilisez les applets de commande PSSession, vous pouvez faire référence à une session PSSession par son ID, par son nom ou par son ID d’instance (un GUID). La commande suivante obtient une session PSSession par son ID et l’enregistre dans la variable $ps 01.
$ps01 = Get-PSSession -Id 1
À compter de Windows PowerShell 3.0, les sessions PSSession sont conservées sur l’ordinateur distant. Pour obtenir les sessions PSSession que vous avez créées sur des ordinateurs distants particuliers, utilisez le paramètre ComputerName de l’applet de commande Get-PSSession. La commande suivante obtient les sessions PSSession que vous avez créées sur l’ordinateur distant Server01. Cela inclut les PSSessions créées dans la session en cours et dans d’autres sessions sur l’ordinateur local ou d’autres ordinateurs.
Get-PSSession -ComputerName Server01
Dans Windows PowerShell 2.0, Get-PSSession obtient uniquement les sessions PSSession créées dans la session active. Il n’obtient pas les sessions PSSession créées dans d’autres sessions ou sur d’autres ordinateurs, même si les sessions sont connectées et exécutent des commandes sur l’ordinateur local.
Comment exécuter des commandes dans une session PSSession
Pour exécuter une commande dans une ou plusieurs sessions PSSession, utilisez l’applet de commande Invoke-Command.
Utilisez le paramètre Session pour spécifier les sessions PSSession et le paramètre ScriptBlock pour spécifier la commande.
Par exemple, pour exécuter une commande Get-ChildItem (« dir ») dans chacune des trois sessions PSSession enregistrées dans la variable $ps 123, tapez :
Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }
Comment supprimer des PSSessions
Une fois la session PSSession terminée, utilisez l’applet de commande Remove-PSSession pour supprimer la session PSSession et libérer les ressources qu’il utilise.
Remove-PSSession -Session $ps
ou
Remove-PSSession -Id 1
Pour supprimer une session PSSession d’un ordinateur distant, utilisez le paramètre ComputerName de l’applet de commande Remove-PSSession.
Remove-PSSession -ComputerName Server01 -Id 1
Si vous ne supprimez pas la session PSSession, la session PSSession reste disponible pour une utilisation jusqu’à ce qu’elle expire.
Vous pouvez également utiliser le paramètre IdleTimeout de l’applet de commande New-PSSessionOption pour définir un délai d’expiration pour une session PSSession inactive. Pour plus d'informations, reportez-vous à la section New-PSSessionOption.
Les cmdlets PSSession
Pour obtenir la liste des applets de commande PSSession, tapez :
Get-Help *-PSSession
- Connect-PSSession : connecte une session PSSession à la session en cours
- Disconnect-PSSession : Déconnecte un PSSession de la session en cours.
- Enter-PSSession : démarre une session interactive
- Exit-PSSession : met fin à une session interactive
- Get-PSSession : Obtenir les PSSessions de la session en cours
- New-PSSession : crée une session PSSession sur un ordinateur local ou distant
- Receive-PSSession : obtient les résultats des commandes exécutées dans une session déconnectée
- Remove-PSSession : Supprime les PSSessions de la session en cours.
Pour plus d’informations
Pour plus d'informations sur les PSSessions, voir about_PSSession_Details.
Voir aussi
about_Remote_Disconnected_Sessions