about_PSSessions

Mis à jour: mai 2014

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

RUBRIQUE

about_PSSessions

DESCRIPTION COURTE

Décrit les sessions Windows PowerShell et explique comment établir une connexion permanente à un ordinateur distant.

DESCRIPTION DÉTAILLÉE

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 et exécuter des commandes dans la session PowerShell.

Quand vous créez une session PowerShell, Windows PowerShell établit une connexion permanente à l’ordinateur distant. Utilisez une session PowerShell 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 PowerShell peuvent partager des données, comme les valeurs des variables, les alias et les fonctions.

Vous pouvez également créer une session PowerShell sur l’ordinateur local et y exécuter des commandes. Une session PowerShell locale utilise l’infrastructure de communication à distance de Windows PowerShell pour créer et gérer la session PowerShell.

Depuis Windows PowerShell 3.0, les sessions PowerShell sont indépendantes des sessions dans lesquelles elles sont créées. Les sessions PowerShell actives sont conservées sur l’ordinateur distant (ou l’ordinateur situé à l’extrémité distante ou du « côté serveur » de la connexion). Par conséquent, vous pouvez vous déconnecter de la session PowerShell 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 PowerShell. Pour plus des informations plus détaillées, consultez about_PSSession_Details.

Notes

Les sessions PowerShell l’infrastructure de communication à distance de Windows PowerShell. Pour utiliser des sessions PowerShell, l’ordinateur local et l’ordinateur distant doivent être configurés pour la communication à distance. Pour plus d'informations, consultez about_Remote_Requirements.

Dans Windows Vista et les versions ultérieures de Windows, pour créer une session PowerShell 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, comme des modules et des composants logiciels enfichables, et vous pouvez créer des éléments, comme des variables, des fonctions et des alias. Ces éléments existent seulement dans la session et ils sont supprimés quand la session se termine.

Vous pouvez également créer des sessions gérées par l’utilisateur, appelées « Windows PowerShell », sur l’ordinateur local ou sur un ordinateur distant. Comme pour la session par défaut, vous pouvez exécuter des commandes dans une session PowerShell, et ajouter et créer des éléments.

Cependant, contrairement à la session qui démarre automatiquement, vous pouvez contrôler les sessions PowerShell que vous créez. Vous pouvez obtenir, créer, configurer et supprimer ces sessions, vous en déconnecter et vous y reconnecter, et exécuter plusieurs commandes dans la même session PowerShell. La session PowerShell reste disponible jusqu’à ce que vous la supprimiez ou qu’elle dépasse le délai d’attente.

En général, vous créez une session PowerShell pour exécuter une série de commandes associées sur un ordinateur distant. Quand vous créez une session PowerShell sur un ordinateur distant, Windows PowerShell établit une connexion permanente avec l’ordinateur distant.

Si vous utilisez le paramètre ComputerName de l’applet de commande Invoke-Command ou Enter-PSSession pour exécuter une commande distante 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 la fin de la session interactive. Vous ne pouvez pas contrôler ces sessions temporaires, et vous ne pouvez pas les utiliser pour plusieurs commandes ou pour plusieurs sessions interactives.

Dans Windows PowerShell, « la session active » 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 PowerShell.

POURQUOI UTILISER UNE SESSION POWERSHELL ?

Utilisez une session PowerShell quand vous avez besoin d’une connexion permanente à un ordinateur distant. Avec une session PowerShell, vous pouvez exécuter une série de commandes qui partagent des données, comme la valeur de variables, le contenu d’une fonction ou la définition d’un alias.

Vous pouvez exécuter des commandes distantes sans créer une session PowerShell. Utilisez le paramètre ComputerName des applets de commande utilisables avec une connexion à distance pour exécuter une seule commande ou une série de commandes non associées sur un ou plusieurs ordinateurs.

Quand vous utilisez le paramètre ComputerName de l’applet de commande 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 quand la connexion est fermée.

D’autres applets de commande qui ont un paramètre ComputerName, comme Get-Eventlog et Get-WmiObject, utilisent des technologies de communication à distance différentes pour collecter des données. Aucune ne crée une connexion permanente comme une session PowerShell.

COMMENT CRÉER UNE SESSION POWERSHELL

Pour créer une session PSSession, utilisez l'applet de commande New-PSSession. Pour créer la session PowerShell 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 PowerShell sur l’ordinateur Server01.

        New-PSSession -ComputerName Server01

Quand vous envoyez la commande, New-PSSession crée la session PowerShell et retourne un objet qui représente la session PowerShell. Vous pouvez enregistrer l’objet dans une variable quand vous créez la session PowerShell, ou vous pouvez utiliser une commande Get-PSSession pour obtenir la session PowerShell ultérieurement.

Par exemple, la commande suivante crée une session PowerShell sur l’ordinateur Server01 et enregistre l’objet résultant dans la variable $ps.

        $ps = New-PSSession -ComputerName Server01

COMMENT CRÉER DES SESSIONS POWERSHELL SUR PLUSIEURS ORDINATEURS

Pour créer des sessions PowerShell 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 PowerShell sur les ordinateurs Server01, Server02 et Server03, tapez :

        New-PSSession -ComputerName Server01, Server02, Server03

New-PSSession crée une session PowerShell sur chacun des ordinateurs distants.

COMMENT OBTENIR DES SESSIONS POWERSHELL

Pour obtenir les sessions PowerShell qui ont été 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. Insérez ici le corps de la section.

La commande suivante obtient toutes les sessions PowerShell qui ont été créées dans la session active.

        Get-PSSession

L’affichage par défaut des sessions PowerShell montre leur ID et un nom d’affichage par défaut. Vous pouvez affecter un autre nom d’affichage quand 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 PowerShell dans une variable. La commande suivante obtient les sessions PowerShell et les enregistre dans la variable $ps123.

        $ps123 = Get-PSSession

Quand vous utilisez les applets de commande de session PowerShell, vous pouvez faire référence à une session PowerShell par son ID, par son nom ou par son ID d’instance (un GUID). La commande suivante obtient une session PowerShell par son ID et l’enregistre dans la variable $ps01.

        $ps01 = Get-PSSession -Id 1

Depuis Windows PowerShell 3.0, les sessions PowerShell sont conservées sur l’ordinateur distant. Pour obtenir des sessions PowerShell 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 PowerShell que vous avez créées sur l’ordinateur distant Server01. Ceci inclut les sessions PowerShell créées dans la session active et dans les autres sessions, sur l’ordinateur local ou sur d’autres ordinateurs.

        Get-PSSession -ComputerName Server01

Dans Windows PowerShell 2.0, Get-PSSession obtient seulement les sessions PowerShell qui ont été créées dans la session active. Elle n’obtient pas les sessions PowerShell qui ont été créées dans d’autres sessions ou sur d’autres ordinateurs, même si les sessions sont connectées à l’ordinateur local et y exécutent des commandes.

COMMENT EXÉCUTER DES COMMANDES DANS UNE SESSION POWERSHELL

Pour exécuter une commande dans une ou plusieurs sessions PowerShell, utilisez l’applet de commande Invoke-Command. Utilisez le paramètre Session pour spécifier les sessions PowerShell 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 PowerShell enregistrées dans la variable $ps123, tapez :

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

COMMENT SUPPRIMER DES SESSIONS POWERSHELL

Quand vous avez terminé avec la session PowerShell, utilisez l’applet de commande Remove-PSSession pour supprimer la session PowerShell et pour libérer les ressources qu’elle utilisait.

        Remove-PSSession -Session $ps

- ou-

        Remove-PSSession -Id 1

Pour supprimer une session PowerShell 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 PowerShell, elle reste disponible à l’utilisation jusqu’à son expiration.

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 PowerShell inactive. Pour plus d'informations, consultez New-PSSessionOption.

LES APPLETS DE COMMANDE DE SESSION POWERSHELL

    Cmdlet                Description
    -----------------     ------------------------------------------------------
    New-PSSession         Creates a new PSSession on a local or remote computer.

    Get-PSSession         Gets the PSSessions in the current session.

    Remove-PSSession      Deletes the PSSessions in the current session.

    Enter-PSSession       Starts an interactive session.

    Exit-PSSession        Ends an interactive session.
    
    Disconnect-PSSession  Disconnects a PSSession from the current session.

    Connect-PSSession     Connects a PSSession to the current session.
     
    Receive-PSSession     Gets the results of commands that ran in a disconnected
                          session.

Pour obtenir une liste des applets de commande de session PowerShell, tapez :

       get-help *-PSSession

POUR PLUS D'INFORMATIONS

Pour plus d’informations sur les sessions PowerShell, consultez about_PSSession_Details.

VOIR AUSSI

about_Remote

about_Remote_Disconnected_Sessions

about_Remote_Requirements

Connect-PSSession

Disconnect-PSSession

Enter-PSSession

Exit-PSSession

Get-PSSession

Invoke-Command

New-PSSession

Remove-PSSession