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 LONGUE
Une session est un environnement dans lequel Windows PowerShell
s'exécute. Une session est créée pour vous dès que vous démarrez
Windows PowerShell. Vous pouvez créer des sessions supplémentaires,
appelées " sessions Windows PowerShell " ou " sessions PSSession ",
sur votre ordinateur ou un autre ordinateur.
Contrairement aux sessions que Windows PowerShell crée pour vous,
vous contrôlez et gérez les sessions PSSession que vous créez.
Les sessions PSSession jouent un rôle important dans l'informatique
à distance. Lorsque vous créez une session PSSession connectée à un
ordinateur distant, Windows PowerShell établit une connexion
permanente à cet ordinateur pour prendre en charge la session
PSSession. Vous pouvez utiliser la session PSSession pour exécuter
une série de commandes, de fonctions et de scripts qui partagent
des données.
Cette rubrique fournit des informations détaillées sur les sessions et
sessions PSSession dans Windows PowerShell. Pour plus d'informations
sur les tâches que vous pouvez effectuer 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 familière ou un autre programme
exécutant des commandes, tel que Cmd.exe ou un programme conçu
pour héberger Windows PowerShell, tel que Windows PowerShell
ISE (Integrated Scripting Environment).
Du point de vue de 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 qui existe lorsque la session est créée persiste
pendant toute 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, même les sessions que vous créez dans un script.
Vous ne pouvez exécuter qu'une commande (ou qu'un pipeline de
commandes) à la fois dans une session. Une seconde commande
exécutée de façon synchrone (une à la fois) attend jusqu'à quatre
minutes que la première commande s'achève. Une seconde commande
exécutée de façon asynchrone (simultanément) échoue.
À PROPOS DES SESSIONS PSSESSION
Une session est créée dès que vous démarrez Windows PowerShell. De plus,
Windows PowerShell crée des sessions temporaires pour exécuter des
commandes individuelles. Toutefois, vous pouvez également créer des
sessions (appelées " sessions Windows PowerShell " ou " sessions
PSSession ") que vous contrôlez et gérez.
Les sessions PSSession sont essentielles aux 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.
Toutefois, si vous utilisez l'applet de commande New-PSSession
pour créer une session PSSession, Windows PowerShell établit une
session persistante sur l'ordinateur distant, dans laquelle vous
pouvez exécuter plusieurs commandes ou sessions interactives. Les
sessions PSSession que vous créez restent ouvertes et disponibles
jusqu'à ce que vous les supprimiez ou jusqu'à ce que vous fermiez
la session dans laquelle elles ont été créées.
Lorsque vous créez une session PSSession sur un ordinateur distant,
le système crée un processus PowerShell sur cet ordinateur et établit
une connexion entre l'ordinateur local et le processus de
l'ordinateur distant. Lorsque vous créez une session PSSession sur
l'ordinateur local, le nouveau processus et les connexions sont créés
sur cet ordinateur.
QUAND AI-JE BESOIN D'UNE SESSION PSSESSION ?
Les applets de commande Invoke-Command et Enter-PSSession ont les
paramètres ComputerName et Session. Vous pouvez utiliser l'un ou
l'autre de ces paramètres pour exécuter une commande distante.
Utilisez le paramètre ComputerName pour exécuter une commande
simple 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 PSSession, puis utilisez le paramètre
Session pour exécuter des commandes dans la session PSSession.
De nombreuses autres applets de commande obtenant des données
d'ordinateurs distants, telles que Get-Process, Get-Service,
Get-EventLog et Get-WmiObject ne disposent que du paramètre
ComputerName. Elles utilisent d'autres technologies que la
communication à distance Windows PowerShell pour recueillir
des 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 les exécuter dans une session PSSession.
COMMENT CRÉER UNE SESSION PSSESSION ?
Pour créer une session PSSession, utilisez l'applet de commande
New-PSSession. Vous pouvez utiliser New-PSSession pour créer une
session PSSession sur un ordinateur local ou distant.
PUIS-JE CRÉER UNE SESSION PSSESSION SUR N'IMPORTE QUEL ORDINATEUR ?
Pour créer une session PSSession connectée à un ordinateur distant,
l'ordinateur doit être configuré pour la communication à distance
dans Windows PowerShell. L'utilisateur actuel doit être membre du
groupe Administrateurs sur l'ordinateur distant ou doit pouvoir
fournir les informations d'identification d'un membre du groupe
Administrateurs. Pour plus d'informations, consultez
about_Remote_Requirements.
PUIS-JE VOIR LES SESSIONS PSSESSION CRÉÉES PAR D'AUTRES PERSONNES SUR MON
ORDINATEUR ?
Non. Vous ne pouvez obtenir et gérer que les sessions PSSession
que vous avez créées dans la session active. Vous ne pouvez pas
voir les sessions PSSession que d'autres ont créées, même si
elles exécutent des commandes sur l'ordinateur local.
PUIS-JE EXÉCUTER UNE TÂCHE EN ARRIÈRE-PLAN DANS UNE SESSION PSSESSION ?
Oui. Une tâche en arrière-plan est une commande qui s'exécute de façon
asynchrone en arrière-plan sans interagir avec la session active. Lorsque
vous envoyez une commande pour démarrer une tâche, la commande retourne
un objet de traitement, mais la tâche continue de fonctionner à
l'arrière-plan jusqu'à ce qu'elle soit terminée.
Pour démarrer une tâche en arrière-plan sur un ordinateur local,
utilisez la commande Start-Job. Vous pouvez exécuter la tâche en
arrière-plan dans une connexion temporaire (en utilisant le paramètre
ComputerName) ou dans une session PSSession (en utilisant le
paramètre Session).
Pour démarrer une tâche en arrière-plan sur un ordinateur
distant, utilisez l'applet de commande Invoke-Command avec son
paramètre AsJob ou 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
PSSession. Si vous utilisez le paramètre ComputerName, Windows
PowerShell met fin à la connexion lorsque l'objet de traitement
est retourné et la tâche est interrompue.
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 y aviez tapées directement.
Vous pouvez exécuter une session interactive dans une session
temporaire (en utilisant le paramètre ComputerName) ou dans une
session PSSession (en utilisant le paramètre Session). Si vous
utilisez une session PSSession, celle-ci conserve les données des
commandes précédentes et toutes les données générées pendant la
session interactive pour les utiliser dans des commandes ultérieures.
Lorsque vous mettez fin à la session interactive, la session
PSSession reste ouverte et disponible.
Pour plus d'informations, consultez Enter-PSSession et Exit-PSSession.
DOIS-JE SUPPRIMER LES SESSIONS PSSESSION ?
Oui. Une session PSSession est un processus, à savoir un
environnement autonome qui utilise de la mémoire et d'autres
ressources, même lorsque vous ne l'utilisez pas. Lorsque vous
avez fini de travailler avec une session PSSession, supprimez-la.
Si vous créez plusieurs sessions PSSession, fermez celles que vous
n'utilisez pas et conservez les autres.
Pour supprimer des sessions PSSession, utilisez l'applet de
commande Remove-PSSession. Elle supprime les sessions PSSession
et libère toutes les ressources qu'elles utilisaient.
Vous pouvez également utiliser le paramètre TimeOut de
New-PSSession pour fermer une session PSSession inactive après un
intervalle que vous spécifiez. Pour plus d'informations, consultez
New-PSSession.
Si vous ne supprimez pas la session PSSession ou si vous ne
définissez pas de délai d'expiration, la session PSSession reste
ouverte et disponible jusqu'à ce que vous la fermiez, jusqu'à ce
que vous fermiez la session dans laquelle elle a été créée ou
jusqu'à ce que vous quittiez Windows PowerShell. Toutefois, une
session PSSession sur un ordinateur distant sera déconnectée si
l'ordinateur distant ne répond pas pendant quatre minutes.
(L'ordinateur distant est configuré pour envoyer une impulsion
toutes les trois minutes.)
Si vous enregistrez un objet PSSession dans une variable, puis
supprimez la session PSSession ou la laissez expirer, la variable
contient toujours l'objet PSSession, mais la session PSSession
est inactive et ne peut pas être utilisée, ni réparée.
TOUTES LES SESSIONS ET SESSIONS PSSESSION SONT-ELLES IDENTIQUES ?
Non. Les développeurs peuvent créer des sessions personnalisées
incluant seulement certains fournisseurs et certaines applets de
commande. Si une commande fonctionne dans une session, mais pas
dans une autre, ce peut être parce que la session est restreinte.
VOIR AUSSI
about_Jobs
about_PSSessions
about_Remote
about_Remote_Requirements
Invoke-Command
New-PSSession
Get-PSSession
Remove-PSSession
Enter-PSSession
Exit-PSSession