À propos de sessions PSSessionAbout PSSessions

Description courteShort Description

Décrit les sessions PowerShell (sessions PSSession) et explique comment établir une connexion permanente à un ordinateur distant.Describes PowerShell sessions (PSSessions) and explains how to establish a persistent connection to a remote computer.

Description longueLong Description

Pour exécuter des commandes PowerShell sur un ordinateur distant, vous pouvez utiliser le paramètre ComputerName d’une applet de commande, ou vous pouvez créer une session PowerShell (PSSession) et exécuter des commandes dans la session PSSession.To run PowerShell commands on a remote computer, you can use the ComputerName parameter of a cmdlet, or you can create a PowerShell session (PSSession) and run commands in the PSSession.

Lorsque vous créez une session PSSession, PowerShell établit une connexion permanente à l’ordinateur distant.When you create a PSSession, PowerShell establishes a persistent connection to the remote computer. Utilisez une session PSSession pour exécuter une série de commandes associées sur un ordinateur distant.Use a PSSession to run a series of related commands on a remote computer. Les commandes qui s’exécutent dans la même session PSSession peuvent partager des données, telles que les valeurs des variables, des alias et des fonctions.Commands that run in the same PSSession can share data, such as the values of variables, aliases, and functions.

Vous pouvez également créer une session PSSession sur l’ordinateur local et y exécuter des commandes.You can also create a PSSession on the local computer and run commands in it. Une session PSSession locale utilise l’infrastructure de communication à distance PowerShell pour créer et maintenir la session PSSession.A local PSSession uses the PowerShell remoting infrastructure to create and maintain the PSSession.

À compter de Windows PowerShell 3,0, les sessions PSSession sont indépendants des sessions dans lesquelles ils sont créés.Beginning in Windows PowerShell 3.0, PSSessions are independent of the sessions in which they are created. Les sessions PSSession actifs sont conservés sur l’ordinateur distant (ou l’ordinateur situé à l’extrémité distante ou côté serveur de la connexion).Active PSSessions are maintained on the remote computer (or the computer at the remote end or "server-side" of the connection). Par conséquent, vous pouvez vous déconnecter de la session PSSession et vous y reconnecter ultérieurement à partir du même ordinateur ou d’un autre ordinateur.As a result, you can disconnect from the PSSession and reconnect to it at a later time from the same computer or from a different computer.

Cette rubrique explique comment créer, utiliser, récupérer et supprimer des sessions PSSession.This topic explains how to create, use, get, and delete PSSessions. Pour plus d’informations, consultez about_PSSession_Details.For more advanced information, see about_PSSession_Details.

Remarque : sessions PSSession utilise l’infrastructure de communication à distance PowerShell.Note: PSSessions use the PowerShell remoting infrastructure. Pour utiliser sessions PSSession, les ordinateurs locaux et distants doivent être configurés pour la communication à distance.To use PSSessions, the local and remote computers must be configured for remoting. Pour plus d'informations, consultez about_Remote_Requirements.For more information, see about_Remote_Requirements.

Dans Windows Vista et les versions ultérieures de Windows, vous devez démarrer PowerShell avec l’option « Exécuter en tant qu’administrateur » pour créer une session PSSession sur un ordinateur local.In Windows Vista and later versions of Windows, to create a PSSession on a local computer, you must start PowerShell with the "Run as administrator" option.

Qu’est-ce qu’une session ?What Is a Session?

Une session est un environnement dans lequel PowerShell s’exécute.A session is an environment in which PowerShell runs.

Chaque fois que vous démarrez PowerShell, une session est créée pour vous et vous pouvez exécuter des commandes dans la session.Each time you start PowerShell, a session is created for you, and you can run commands in the session. Vous pouvez également ajouter des éléments à votre session, tels que des modules et des composants logiciels enfichables, et vous pouvez créer des éléments, tels que des variables, des fonctions et des alias.You can also add items to your session, such as modules and snap-ins, and you can create items, such as variables, functions, and aliases. Ces éléments existent uniquement dans la session et sont supprimés à la fin de la session.These items exist only in the session and are deleted when the session ends.

Vous pouvez également créer des sessions gérées par l’utilisateur, appelées « sessions PowerShell » ou « sessions PSSession », sur l’ordinateur local ou sur un ordinateur distant.You can also create user-managed sessions, known as " PowerShell sessions" or "PSSessions," on the local computer or on a remote computer. Comme pour la session par défaut, vous pouvez exécuter des commandes dans une session PSSession et ajouter et créer des éléments.Like the default session, you can run commands in a PSSession and add and create items. Toutefois, contrairement à la session qui démarre automatiquement, vous pouvez contrôler le sessions PSSession que vous créez.However, unlike the session that starts automatically, you can control the PSSessions that you create. Vous pouvez les récupérer, les créer, les configurer et les supprimer, vous déconnecter et vous y reconnecter, et exécuter plusieurs commandes dans la même session PSSession.You can get, create, configure, and remove them, disconnect and reconnect to them, and run multiple commands in the same PSSession. La session PSSession reste disponible jusqu’à ce que vous la supprimiez ou expire.The PSSession remains available until you delete it or it times out.

En général, vous créez une session PSSession pour exécuter une série de commandes associées sur un ordinateur distant.Typically, you create a PSSession to run a series of related commands on a remote computer. Lorsque vous créez une session PSSession sur un ordinateur distant, PowerShell établit une connexion permanente à l’ordinateur distant pour prendre en charge la session.When you create a PSSession on a remote computer, PowerShell establishes a persistent connection to the remote computer to support the session.

Si vous utilisez le paramètre ComputerName de l' Invoke-Command applet de Enter-PSSession commande ou pour exécuter une commande à distance ou démarrer une session interactive, 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 la fin de la session interactive.If you use the ComputerName parameter of the Invoke-Command or Enter-PSSession cmdlet to run a remote command or to start an interactive session, PowerShell creates a temporary session on the remote computer and closes the session as soon as the command is complete or as soon as the interactive session ends. Vous ne pouvez pas contrôler ces sessions temporaires et vous ne pouvez pas les utiliser pour plusieurs commandes ou une seule session interactive.You cannot control these temporary sessions, and you cannot use them for more than a single command or a single interactive session.

Dans PowerShell, la « session active » correspond à la session dans laquelle vous travaillez.In PowerShell, the "current session" is the session that you are working in. La « session active » peut faire référence à n’importe quelle session, y compris une session temporaire ou une session PSSession.The "current session" can refer to any session, including a temporary session or a PSSession.

Pourquoi utiliser une session PSSession ?Why Use a PSSession?

Utilisez une session PSSession lorsque vous avez besoin d’une connexion permanente à un ordinateur distant.Use a PSSession when you need a persistent connection to a remote computer. Avec 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.With a PSSession, you can run a series of commands that share data, such as the value of variables, the contents of a function, or the definition of an alias.

Vous pouvez exécuter des commandes distantes sans créer de session PSSession.You can run remote commands without creating a PSSession. Utilisez le paramètre ComputerName des cmdlets distantes pour exécuter une seule commande ou une série de commandes non liées sur un ou plusieurs ordinateurs.Use the ComputerName parameter of remote-enabled cmdlets to run a single command or a series of unrelated commands on one or many computers.

Quand vous utilisez le paramètre ComputerName de Invoke-Command ou Enter-PSSession , PowerShell établit une connexion temporaire à l’ordinateur distant, puis ferme la connexion dès que la commande est terminée.When you use the ComputerName parameter of Invoke-Command or Enter-PSSession, PowerShell establishes a temporary connection to the remote computer and then closes the connection as soon as the command is complete. Tout élément de données que vous créez est perdu lorsque la connexion est fermée.Any data elements that you create are lost when the connection is closed.

D’autres applets de commande ayant un paramètre ComputerName , telles que Get-Eventlog et Get-WmiObject , utilisent différentes technologies de communication à distance pour collecter des données.Other cmdlets that have a ComputerName parameter, such as Get-Eventlog and Get-WmiObject, use different remoting technologies to gather data. Aucun crée une connexion persistante comme une session PSSession.None create a persistent connection like a PSSession.

Comment créer une session PSSessionHow to Create a PSSession

Pour créer une session PSSession, utilisez l’applet de commande New-PSSession .To create a PSSession, use the New-PSSession cmdlet. Pour créer la session PSSession sur un ordinateur distant, utilisez le paramètre ComputerName de l’applet de commande New-PSSession .To create the PSSession on a remote computer, use the ComputerName parameter of the New-PSSession cmdlet.

Par exemple, la commande suivante crée une session PSSession sur l’ordinateur SERVEUR01.For example, the following command creates a new PSSession on the Server01 computer.

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.When you submit the command, New-PSSession creates the PSSession and returns an object that represents the PSSession. Vous pouvez enregistrer l’objet dans une variable lorsque vous créez la session PSSession, ou vous pouvez utiliser une Get-PSSession commande pour obtenir la session PSSession ultérieurement.You can save the object in a variable when you create the PSSession, or you can use a Get-PSSession command to get the PSSession at a later time.

Par exemple, la commande suivante crée une session PSSession sur l’ordinateur SERVEUR01 et enregistre l’objet résultant dans la variable $ps.For example, the following command creates a new PSSession on the Server01 computer and saves the resulting object in the $ps variable.

$ps = New-PSSession -ComputerName Server01

Comment créer des sessions PSSession sur plusieurs ordinateursHow to Create PSSessions on Multiple Computers

Pour créer des sessions PSSession sur plusieurs ordinateurs, utilisez le paramètre ComputerName de l’applet de commande New-PSSession .To create PSSessions on multiple computers, use the ComputerName parameter of the New-PSSession cmdlet. Tapez les noms des ordinateurs distants dans une liste séparée par des virgules.Type the names of the remote computers in a comma-separated list.

Par exemple, pour créer des sessions PSSession sur les ordinateurs Serveur01, Server02 et Server03, tapez :For example, to create PSSessions on the Server01, Server02, and Server03 computers, type:

New-PSSession -ComputerName Server01, Server02, Server03

New-PSSession crée une session PSSession sur chacun des ordinateurs distants.New-PSSession creates one PSSession on each of the remote computers.

Obtention de sessions PSSessionHow to Get PSSessions

Pour récupérer les sessions PSSession qui ont été créés dans votre session active, utilisez l’applet de commande Get-PSSession sans le paramètre ComputerName .To get the PSSessions that were created in your current session, use the Get-PSSession cmdlet without the ComputerName parameter. Get-PSSession retourne le même type d’objet que celui New-PSSession retourné par.Get-PSSession returns the same type of object that New-PSSession returns.

La commande suivante obtient toutes les sessions PSSession qui ont été créées dans la session active.The following command gets all the PSSessions that were created in the current session.

Get-PSSession

L’affichage par défaut de l’sessions PSSession affiche son ID et un nom d’affichage par défaut.The default display of the PSSessions shows their ID and a default display name. Vous pouvez attribuer un autre nom d’affichage lorsque vous créez la session.You can assign an alternate display name when you create the 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 le sessions PSSession dans une variable.You can also save the PSSessions in a variable. La commande suivante obtient le sessions PSSession et les enregistre dans la $ variable ps123.The following command gets the PSSessions and saves them in the $ps123 variable.

$ps123 = Get-PSSession

Lorsque vous utilisez les applets de commande PSSession, vous pouvez faire référence à une session PSSession par son ID, son nom ou son ID d’instance (GUID).When using the PSSession cmdlets, you can refer to a PSSession by its ID, by its name, or by its instance ID (a GUID). La commande suivante obtient une session PSSession par son ID et l’enregistre dans la $ variable PS01.The following command gets a PSSession by its ID and saves it in the $ps01 variable.

$ps01 = Get-PSSession -Id 1

À compter de Windows PowerShell 3,0, les sessions PSSession sont conservés sur l’ordinateur distant.Beginning in Windows PowerShell 3.0, PSSessions are maintained on the remote computer. Pour accéder à des sessions PSSession que vous avez créés sur des ordinateurs distants particuliers, utilisez le paramètre ComputerName de l’applet de commande Get-PSSession .To get PSSessions that you created on particular remote computers, use the ComputerName parameter of the Get-PSSession cmdlet. La commande suivante obtient les sessions PSSession que vous avez créés sur l’ordinateur distant SERVEUR01.The following command gets the PSSessions that you created on the Server01 remote computer. Cela comprend les sessions PSSession créés dans la session active et dans d’autres sessions sur l’ordinateur local ou d’autres ordinateurs.This includes PSSessions created in the current session and in other sessions on the local computer or other computers.

Get-PSSession -ComputerName Server01

Dans Windows PowerShell 2,0, Get-PSSession obtient uniquement les sessions PSSession qui ont été créés dans la session active.In Windows PowerShell 2.0, Get-PSSession gets only the PSSessions that were created in the current session. Il n’obtient pas les sessions PSSession qui ont été créés 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.It does not get PSSessions that were created in other sessions or on other computers, even if the sessions are connected to and are running commands on the local computer.

Comment exécuter des commandes dans une session PSSessionHow to Run Commands in a PSSession

Pour exécuter une commande dans un ou plusieurs sessions PSSession, utilisez l' Invoke-Command applet de commande.To run a command in one or more PSSessions, use the Invoke-Command cmdlet. Utilisez le paramètre session pour spécifier sessions PSSession et le paramètre scriptblock pour spécifier la commande.Use the Session parameter to specify the PSSessions and the ScriptBlock parameter to specify the command.

Par exemple, pour exécuter une Get-ChildItem commande (« dir ») dans chacun des trois sessions PSSession enregistrés dans la variable $ps 123, tapez :For example, to run a Get-ChildItem ("dir") command in each of the three PSSessions saved in the $ps123 variable, type:

Invoke-Command -Session $ps123 -ScriptBlock { Get-ChildItem }

Comment supprimer des sessions PSSessionHow to Delete PSSessions

Lorsque vous avez terminé avec la session PSSession, utilisez l' Remove-PSSession applet de commande pour supprimer la session PSSession et libérer les ressources qu’elle utilisait.When you are finished with the PSSession, use the Remove-PSSession cmdlet to delete the PSSession and to release the resources that it was using.

Remove-PSSession -Session $ps

ouor

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 .To remove a PSSession from a remote computer, use the ComputerName parameter of the Remove-PSSession cmdlet.

Remove-PSSession -ComputerName Server01 -Id 1

Si vous ne supprimez pas la session PSSession, la session PSSession reste disponible pour être utilisée jusqu’à expiration.If you do not delete the PSSession, the PSSession remains available for use until it times out.

Vous pouvez également utiliser le paramètre IdleTimeout de l' New-PSSessionOption applet de commande pour définir une heure d’expiration pour une session PSSession inactive.You can also use the IdleTimeout parameter of the New-PSSessionOption cmdlet to set an expiration time for an idle PSSession. Pour plus d’informations, consultez New-PSSessionOption.For more information, see New-PSSessionOption.

Applets de commande PSSessionThe PSSession Cmdlets

Pour obtenir la liste des applets de commande PSSession, tapez :For a list of PSSession cmdlets, type:

Get-Help *-PSSession
  • Connect-PSSession : connecte une session PSSession à la session activeConnect-PSSession: Connects a PSSession to the current session
  • Disconnect-PSSession : déconnecte une session PSSession de la session activeDisconnect-PSSession: Disconnects a PSSession from the current session
  • Enter-PSSession : démarre une session interactiveEnter-PSSession: Starts an interactive session
  • Exit-PSSession : met fin à une session interactiveExit-PSSession: Ends an interactive session
  • Obtenir-PSSession : obtient le sessions PSSession dans la session activeGet-PSSession: Gets the PSSessions in the current session
  • New-PSSession : crée une session PSSession sur un ordinateur local ou distantNew-PSSession: Creates a new PSSession on a local or remote computer
  • Receive-PSSession : obtient les résultats des commandes exécutées dans une session déconnectéeReceive-PSSession: Gets the results of commands that ran in a disconnected session
  • Remove-PSSession : supprime le sessions PSSession dans la session activeRemove-PSSession: Deletes the PSSessions in the current session

Pour plus d'informationsFor More Information

Pour plus d’informations sur sessions PSSession, consultez about_PSSession_Details.For more information about PSSessions, see about_PSSession_Details.

Voir aussiSee Also

about_Remoteabout_Remote

about_Remote_Disconnected_Sessionsabout_Remote_Disconnected_Sessions

about_Remote_Requirementsabout_Remote_Requirements

Connect-PSSessionConnect-PSSession

Disconnect-PSSessionDisconnect-PSSession

Enter-PSSessionEnter-PSSession

Exit-PSSessionExit-PSSession

Get-PSSessionGet-PSSession

Invoke-CommandInvoke-Command

New-PSSessionNew-PSSession

Remove-PSSessionRemove-PSSession