Invoke-Command
Exécute des commandes sur des ordinateurs locaux et distants.
Syntaxe
Invoke-Command
[-ScriptBlock] <ScriptBlock>
[-NoNewScope]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[[-Session] <PSSession[]>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-ScriptBlock] <ScriptBlock>
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[[-Session] <PSSession[]>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-JobName <String>]
[-FilePath] <String>
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[[-ComputerName] <String[]>]
[-Credential <PSCredential>]
[-Port <Int32>]
[-UseSSL]
[-ConfigurationName <String>]
[-ApplicationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-InDisconnectedSession]
[-SessionName <String[]>]
[-HideComputerName]
[-JobName <String>]
[-FilePath] <String>
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
[[-ComputerName] <String[]>]
[-Credential <PSCredential>]
[-Port <Int32>]
[-UseSSL]
[-ConfigurationName <String>]
[-ApplicationName <String>]
[-ThrottleLimit <Int32>]
[-AsJob]
[-InDisconnectedSession]
[-SessionName <String[]>]
[-HideComputerName]
[-JobName <String>]
[-ScriptBlock] <ScriptBlock>
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[-CertificateThumbprint <String>]
[<CommonParameters>]
Invoke-Command
[-Credential <PSCredential>]
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[[-ConnectionUri] <Uri[]>]
[-AsJob]
[-InDisconnectedSession]
[-HideComputerName]
[-JobName <String>]
[-ScriptBlock] <ScriptBlock>
[-AllowRedirection]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[-CertificateThumbprint <String>]
[<CommonParameters>]
Invoke-Command
[-Credential <PSCredential>]
[-ConfigurationName <String>]
[-ThrottleLimit <Int32>]
[[-ConnectionUri] <Uri[]>]
[-AsJob]
[-InDisconnectedSession]
[-HideComputerName]
[-JobName <String>]
[-FilePath] <String>
[-AllowRedirection]
[-SessionOption <PSSessionOption>]
[-Authentication <AuthenticationMechanism>]
[-EnableNetworkAccess]
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[<CommonParameters>]
Invoke-Command
-Credential <PSCredential>
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-ScriptBlock] <ScriptBlock>
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[-VMGuid] <Guid[]>
[<CommonParameters>]
Invoke-Command
-Credential <PSCredential>
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-ScriptBlock] <ScriptBlock>
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
-VMName <String[]>
[<CommonParameters>]
Invoke-Command
-Credential <PSCredential>
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-FilePath] <String>
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
[-VMGuid] <Guid[]>
[<CommonParameters>]
Invoke-Command
-Credential <PSCredential>
[-ThrottleLimit <Int32>]
[-AsJob]
[-HideComputerName]
[-FilePath] <String>
[-InputObject <PSObject>]
[-ArgumentList <Object[]>]
-VMName <String[]>
[<CommonParameters>]
Description
L’applet de commande Invoke-Command
exécute des commandes sur un ordinateur local ou distant et retourne toutes les sorties des commandes, y compris les erreurs. À l’aide d’une seule commande Invoke-Command
, vous pouvez exécuter des commandes sur plusieurs ordinateurs.
Pour exécuter une seule commande sur un ordinateur distant, utilisez le paramètre ComputerName
Vous pouvez également utiliser Invoke-Command
sur un ordinateur local pour un bloc de script en tant que commande. PowerShell exécute immédiatement le bloc de script dans une étendue enfant de l’étendue actuelle.
Avant d’utiliser Invoke-Command
pour exécuter des commandes sur un ordinateur distant, lisez about_Remote.
Certains exemples de code utilisent l’platissement pour réduire la longueur de ligne. Pour plus d’informations, consultez about_Splatting.
Exemples
Exemple 1 : Exécuter un script sur un serveur
Cet exemple exécute le script Test.ps1
sur l’ordinateur Server01.
Invoke-Command -FilePath c:\scripts\test.ps1 -ComputerName Server01
Le paramètre FilePath spécifie un script situé sur l’ordinateur local. Le script s’exécute sur l’ordinateur distant et les résultats sont retournés à l’ordinateur local.
Exemple 2 : Exécuter une commande sur un serveur distant
Cet exemple exécute une commande Get-Culture
sur l’ordinateur distant Server01.
Invoke-Command -ComputerName Server01 -Credential Domain01\User01 -ScriptBlock { Get-Culture }
Le paramètre ComputerName spécifie le nom de l’ordinateur distant. Le paramètre Credential est utilisé pour exécuter la commande dans le contexte de sécurité de Domain01\User01, un utilisateur autorisé à exécuter des commandes. Le paramètre ScriptBlock spécifie la commande à exécuter sur l’ordinateur distant.
En réponse, PowerShell demande le mot de passe et une méthode d’authentification pour le compte User01. Il exécute ensuite la commande sur l’ordinateur Server01 et retourne le résultat.
Exemple 3 : Exécuter une commande dans une connexion persistante
Cet exemple exécute la même commande Get-Culture
dans une session, à l’aide d’une connexion persistante, sur l’ordinateur distant nommé Server02.
$s = New-PSSession -ComputerName Server02 -Credential Domain01\User01
Invoke-Command -Session $s -ScriptBlock {Get-Culture}
L’applet de commande New-PSSession
crée une session sur l’ordinateur distant Server02 et l’enregistre dans la variable $s
. En règle générale, vous créez une session uniquement lorsque vous exécutez une série de commandes sur l’ordinateur distant.
L’applet de commande Invoke-Command
exécute la commande Get-Culture
sur Server02. Le paramètre session spécifie la session enregistrée dans la variable $s
.
En réponse, PowerShell exécute la commande dans la session sur l’ordinateur Server02.
Exemple 4 : Utiliser une session pour exécuter une série de commandes qui partagent des données
Cet exemple compare les effets de l’utilisation de ComputerName
Invoke-Command -ComputerName Server02 -ScriptBlock {$p = Get-Process PowerShell}
Invoke-Command -ComputerName Server02 -ScriptBlock {$p.VirtualMemorySize}
$s = New-PSSession -ComputerName Server02
Invoke-Command -Session $s -ScriptBlock {$p = Get-Process PowerShell}
Invoke-Command -Session $s -ScriptBlock {$p.VirtualMemorySize}
17930240
Les deux premières commandes utilisent le paramètre ComputerName de Invoke-Command
pour exécuter des commandes sur l’ordinateur distant Server02. La première commande utilise l’applet de commande Get-Process
pour obtenir le processus PowerShell sur l’ordinateur distant et l’enregistrer dans la variable $p
. La deuxième commande obtient la valeur de la propriété VirtualMemorySize du processus PowerShell.
Lorsque vous utilisez le paramètre ComputerName, PowerShell crée une session pour exécuter la commande.
La session est fermée lorsque la commande est terminée. La variable $p
a été créée dans une connexion, mais elle n’existe pas dans la connexion créée pour la deuxième commande.
Le problème est résolu en créant une session persistante sur l’ordinateur distant, puis en exécutant les deux commandes de la même session.
L’applet de commande New-PSSession
crée une session persistante sur l’ordinateur Server02 et enregistre la session dans la variable $s
. Les lignes $p
reste active.
Exemple 5 : Entrer une commande stockée dans une variable locale
Cet exemple montre comment créer une commande stockée en tant que bloc de script dans une variable locale. Lorsque le bloc de script est enregistré dans une variable locale, vous pouvez spécifier la variable comme valeur du paramètre ScriptBlock.
$command = { Get-EventLog -LogName "Windows PowerShell" |
Where-Object {$_.Message -like "*certificate*"} }
Invoke-Command -ComputerName S1, S2 -ScriptBlock $command
La variable $command
stocke la commande Get-EventLog
mise en forme en tant que bloc de script. Le Invoke-Command
exécute la commande stockée dans $command
sur les ordinateurs distants S1 et S2.
Exemple 6 : Exécuter une seule commande sur plusieurs ordinateurs
Cet exemple montre comment utiliser Invoke-Command
pour exécuter une seule commande sur plusieurs ordinateurs.
$parameters = @{
ComputerName = "Server01", "Server02", "TST-0143", "localhost"
ConfigurationName = 'MySession.PowerShell'
ScriptBlock = { Get-EventLog "Windows PowerShell" }
}
Invoke-Command @parameters
Le paramètre ComputerName spécifie une liste séparée par des virgules des noms d’ordinateurs. La liste des ordinateurs inclut la valeur localhost, qui représente l’ordinateur local. Le paramètre ConfigurationName spécifie une autre configuration de session. Le paramètre ScriptBlock s’exécute Get-EventLog
pour obtenir les journaux des événements Windows PowerShell à partir de chaque ordinateur.
Exemple 7 : Obtenir la version du programme hôte sur plusieurs ordinateurs
Cet exemple obtient la version du programme hôte PowerShell s’exécutant sur 200 ordinateurs distants.
$version = Invoke-Command -ComputerName (Get-Content Machines.txt) -ScriptBlock {(Get-Host).Version}
Étant donné qu’une seule commande est exécutée, vous n’avez pas besoin de créer de connexions persistantes à chacun des ordinateurs. Au lieu de cela, la commande utilise le paramètre Get-Content
pour obtenir le contenu du fichier Machine.txt, un fichier de noms d’ordinateurs.
L’applet de commande Invoke-Command
exécute une commande Get-Host
sur les ordinateurs distants. Il utilise la notation par points pour obtenir la propriété Version de l’hôte PowerShell.
Ces commandes s’exécutent une à la fois. Une fois les commandes terminées, la sortie des commandes de tous les ordinateurs est enregistrée dans la variable $version
. La sortie inclut le nom de l’ordinateur à partir duquel les données proviennent.
Exemple 8 : Exécuter un travail en arrière-plan sur plusieurs ordinateurs distants
Cet exemple exécute une commande sur deux ordinateurs distants. La commande Invoke-Command
utilise le paramètre AsJob afin que la commande s’exécute en tant que travail en arrière-plan. Les commandes s’exécutent sur les ordinateurs distants, mais le travail existe sur l’ordinateur local. Les résultats sont transmis à l’ordinateur local.
$s = New-PSSession -ComputerName Server01, Server02
Invoke-Command -Session $s -ScriptBlock {Get-EventLog system} -AsJob
Id Name State HasMoreData Location Command
--- ---- ----- ----- ----------- ---------------
1 Job1 Running True Server01,Server02 Get-EventLog system
$j = Get-Job
$j | Format-List -Property *
HasMoreData : True
StatusMessage :
Location : Server01,Server02
Command : Get-EventLog system
JobStateInfo : Running
Finished : System.Threading.ManualResetEvent
InstanceId : e124bb59-8cb2-498b-a0d2-2e07d4e030ca
Id : 1
Name : Job1
ChildJobs : {Job2, Job3}
Output : {}
Error : {}
Progress : {}
Verbose : {}
Debug : {}
Warning : {}
StateChanged :
$results = $j | Receive-Job
L’applet de commande New-PSSession
crée des sessions sur les ordinateurs distants Server01 et Server02. L’applet de commande Invoke-Command
exécute un travail en arrière-plan dans chacune des sessions. La commande utilise le paramètre AsJob pour exécuter la commande en tant que travail en arrière-plan. Cette commande retourne un objet de travail qui contient deux objets de travail enfants, un pour chacun des travaux exécutés sur les deux ordinateurs distants.
La commande Get-Job
enregistre l’objet de travail dans la variable $j
. La variable $j
est ensuite redirigée vers l’applet de commande Format-List
pour afficher toutes les propriétés de l’objet de travail dans une liste. La dernière commande obtient les résultats des travaux. Il canalise l’objet de travail dans $j
à l’applet de commande Receive-Job
et stocke les résultats dans la variable $results
.
Exemple 9 : Inclure des variables locales dans une commande exécutée sur un ordinateur distant
Cet exemple montre comment inclure les valeurs des variables locales dans une commande exécutée sur un ordinateur distant. La commande utilise le modificateur d’étendue Using
pour identifier une variable locale dans une commande distante. Par défaut, toutes les variables sont supposées être définies dans la session distante. Le modificateur d’étendue Using
a été introduit dans PowerShell 3.0. Pour plus d’informations sur le modificateur d’étendue Using
, consultez about_Remote_Variables et about_Scopes.
$Log = "Windows PowerShell"
Invoke-Command -ComputerName Server01 -ScriptBlock { Get-EventLog -LogName $Using:Log -Newest 10 }
La variable $Log
stocke le nom du journal des événements, Windows PowerShell. L’applet de commande Invoke-Command
s’exécute Get-EventLog
sur Server01 pour obtenir les dix événements les plus récents du journal des événements. La valeur du paramètre LogName
Exemple 10 : Masquer le nom de l’ordinateur
Cet exemple montre l’effet de l’utilisation du paramètre HideComputerName de Invoke-Command
.
HideComputerName ne modifie pas l’objet retourné par cette applet de commande. Il modifie uniquement l’affichage. Vous pouvez toujours utiliser les applets de commande format
Invoke-Command -ComputerName S1, S2 -ScriptBlock {Get-Process PowerShell}
PSComputerName Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
-------------- ------- ------ ----- ----- ----- ------ -- -----------
S1 575 15 45100 40988 200 4.68 1392 PowerShell
S2 777 14 35100 30988 150 3.68 67 PowerShell
Invoke-Command -ComputerName S1, S2 -ScriptBlock {Get-Process PowerShell} -HideComputerName
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
575 15 45100 40988 200 4.68 1392 PowerShell
777 14 35100 30988 150 3.68 67 PowerShell
Les deux premières commandes utilisent Invoke-Command
pour exécuter une commande Get-Process
pour le processus PowerShell. La sortie de la première commande inclut la propriété PsComputerName, qui contient le nom de l’ordinateur sur lequel la commande s’est exécutée. La sortie de la deuxième commande, qui utilise HideComputerName, n’inclut pas la colonne PsComputerName.
Exemple 11 : Utiliser le mot clé Param dans un bloc de script
Le mot clé Param
et le paramètre ArgumentList sont utilisés pour passer des valeurs de variable à des paramètres nommés dans un bloc de script. Cet exemple montre comment afficher les noms de fichiers qui commencent par la lettre a
et qui ont l’extension .pdf
.
Pour plus d’informations sur le mot clé Param
, consultez about_Language_Keywords.
$parameters = @{
ComputerName = "Server01"
ScriptBlock = { Param ($param1,$param2) Get-ChildItem -Name $param1 -Include $param2 }
ArgumentList = "a*", "*.pdf"
}
Invoke-Command @parameters
aa.pdf
ab.pdf
ac.pdf
az.pdf
Get-ChildItem
utilise les paramètres nommés, Nom et Inclure avec les noms de variables. La ArgumentList transmet les valeurs aux variables.
Exemple 12 : Utiliser la variable automatique $args dans un bloc de script
La $args
variable automatique et le paramètre ArgumentList sont utilisés pour passer des valeurs de tableau à des positions de paramètre dans un bloc de script. Cet exemple montre comment afficher le contenu du répertoire d’un serveur de fichiers .txt
. Le paramètre Get-ChildItem
Path est la position 0 et le paramètre Filter est position 1.
Pour plus d’informations sur la variable $args
, consultez about_Automatic_Variables
$parameters = @{
ComputerName = "Server01"
ScriptBlock = { Get-ChildItem $args[0] $args[1] }
ArgumentList = "C:\Test", "*.txt*"
}
Invoke-Command @parameters
Directory: C:\Test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a--- 6/12/2019 15:15 128 alog.txt
-a--- 7/27/2019 15:16 256 blog.txt
-a--- 9/28/2019 17:10 64 zlog.txt
Exemple 13 : Exécuter un script sur tous les ordinateurs répertoriés dans un fichier texte
Cet exemple utilise l’applet de commande Invoke-Command
pour exécuter le script Sample.ps1
sur tous les ordinateurs répertoriés dans le fichier Servers.txt
. La commande utilise le paramètre FilePath
Invoke-Command -ComputerName (Get-Content Servers.txt) -FilePath C:\Scripts\Sample.ps1 -ArgumentList Process, Service
Lorsque vous envoyez la commande, le contenu du fichier Sample.ps1
est copié dans un bloc de script et le bloc de script est exécuté sur chacun des ordinateurs distants. Cette procédure équivaut à utiliser le paramètre ScriptBlock pour envoyer le contenu du script.
Exemple 14 : Exécuter une commande sur un ordinateur distant à l’aide d’un URI
Cet exemple montre comment exécuter une commande sur un ordinateur distant identifié par un URI (Uniform Resource Identifier). Cet exemple particulier exécute une commande Set-Mailbox
sur un serveur Exchange distant.
$LiveCred = Get-Credential
$parameters = @{
ConfigurationName = 'Microsoft.Exchange'
ConnectionUri = 'https://ps.exchangelabs.com/PowerShell'
Credential = $LiveCred
Authentication = 'Basic'
ScriptBlock = {Set-Mailbox Dan -DisplayName "Dan Park"}
}
Invoke-Command @parameters
La première ligne utilise l’applet de commande Get-Credential
pour stocker les informations d’identification windows Live ID dans la variable $LiveCred
. PowerShell invite l’utilisateur à entrer les informations d’identification windows Live ID.
La variable $parameters
est une table de hachage contenant les paramètres à passer à l’applet de commande Invoke-Command
. L’applet de commande Invoke-Command
exécute une commande Set-Mailbox
à l’aide de la configuration de session Microsoft.Exchange. Le paramètre ConnectionURI spécifie l’URL du point de terminaison du serveur Exchange. Le paramètre Credential spécifie les informations d’identification stockées dans la variable $LiveCred
. Le paramètre AuthenticationMechanism spécifie l’utilisation de l’authentification de base. Le paramètre ScriptBlock spécifie un bloc de script qui contient la commande.
Exemple 15 : Utiliser une option de session
Cet exemple montre comment créer et utiliser un paramètre SessionOption.
$so = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
Invoke-Command -ComputerName server01 -UseSSL -ScriptBlock { Get-HotFix } -SessionOption $so -Credential server01\user01
L’applet de commande New-PSSessionOption
crée un objet d’option de session qui empêche la fin distante de vérifier l’autorité de certification, le nom canonique et les listes de révocation lors de l’évaluation de la connexion HTTPS entrante. L’objet SessionOption
Note
La désactivation de ces vérifications est pratique pour la résolution des problèmes, mais évidemment pas sécurisée.
L’applet de commande Invoke-Command
exécute une commande Get-HotFix
à distance. Le paramètre SessionOption reçoit la variable $so
.
Exemple 16 : Gérer la redirection d’URI dans une commande distante
Cet exemple montre comment utiliser les paramètres AllowRedirection et SessionOption pour gérer la redirection d’URI dans une commande distante.
$max = New-PSSessionOption -MaximumRedirection 1
$parameters = @{
ConnectionUri = "https://ps.exchangelabs.com/PowerShell"
ScriptBlock = { Get-Mailbox dan }
AllowRedirection = $true
SessionOption = $max
}
Invoke-Command @parameters
L’applet de commande New-PSSessionOption
crée un objet PSSessionOption enregistré dans la variable $max
. La commande utilise le paramètre
L’applet de commande Invoke-Command
exécute une commande Get-Mailbox
sur un serveur Microsoft Exchange Server distant. Le paramètre AllowRedirection fournit une autorisation explicite pour rediriger la connexion vers un autre point de terminaison. Le paramètre SessionOption utilise l’objet de session stocké dans la variable $max
.
Par conséquent, si l’ordinateur distant spécifié par ConnectionURI retourne un message de redirection, PowerShell redirige la connexion, mais si la nouvelle destination retourne un autre message de redirection, la valeur du nombre de redirections 1 est dépassée et Invoke-Command
retourne une erreur sans fin.
Exemple 17 : Accéder à un partage réseau dans une session à distance
Cet exemple montre comment accéder à un partage réseau à partir d’une session distante. Trois ordinateurs sont utilisés pour illustrer l’exemple. Server01 est l’ordinateur local, Server02 est l’ordinateur distant et Net03 contient le partage réseau. Server01 se connecte à Server02, puis Server02 effectue un deuxième tronçon vers Net03 pour accéder au partage réseau. Pour plus d’informations sur la façon dont PowerShell Remoting prend en charge les tronçons entre les ordinateurs, consultez Rendre le deuxième tronçon dans PowerShell Remoting.
La délégation CredSSP (Credential Security Support Provider) requise est activée dans les paramètres client de l’ordinateur local et dans les paramètres de service sur l’ordinateur distant. Pour exécuter les commandes de cet exemple, vous devez être membre du groupe Administrateurs sur l’ordinateur local et l’ordinateur distant.
Enable-WSManCredSSP -Role Client -DelegateComputer Server02
$s = New-PSSession Server02
Invoke-Command -Session $s -ScriptBlock {Enable-WSManCredSSP -Role Server -Force}
$parameters = @{
Session = $s
ScriptBlock = { Get-Item \\Net03\Scripts\LogFiles.ps1 }
Authentication = "CredSSP"
Credential = "Domain01\Admin01"
}
Invoke-Command @parameters
L’applet de commande Enable-WSManCredSSP
active la délégation CredSSP de l’ordinateur local Server01 vers l’ordinateur distant Server02. Le paramètre Role spécifie Client pour configurer le paramètre client CredSSP sur l’ordinateur local.
New-PSSession
crée un objet PSSession pour Server02 et stocke l’objet dans la variable $s
.
L’applet de commande Invoke-Command
utilise la variable $s
pour se connecter à l’ordinateur distant, Server02. Le paramètre ScriptBlock s’exécute Enable-WSManCredSSP
sur l’ordinateur distant. Le paramètre Role spécifie Server pour configurer le paramètre de serveur CredSSP sur l’ordinateur distant.
La variable $parameters
contient les valeurs de paramètre à connecter au partage réseau. L’applet de commande Invoke-Command
exécute une commande Get-Item
dans la session dans $s
. Cette commande obtient un script à partir du partage réseau \\Net03\Scripts
. La commande utilise le paramètre d’authentification
Exemple 18 : Démarrer des scripts sur de nombreux ordinateurs distants
Cet exemple exécute un script sur plus d’une centaine d’ordinateurs. Pour réduire l’impact sur l’ordinateur local, il se connecte à chaque ordinateur, démarre le script, puis se déconnecte de chaque ordinateur. Le script continue à s’exécuter dans les sessions déconnectées.
$parameters = @{
ComputerName = (Get-Content -Path C:\Test\Servers.txt)
InDisconnectedSession = $true
FilePath = "\\Scripts\Public\ConfigInventory.ps1"
SessionOption = @{OutputBufferingMode="Drop";IdleTimeout=43200000}
}
Invoke-Command @parameters
La commande utilise Invoke-Command
pour exécuter le script. La valeur du paramètre ComputerName est une commande Get-Content
qui obtient les noms des ordinateurs distants à partir d’un fichier texte. Le paramètre InDisconnectedSession déconnecte les sessions dès qu’il démarre la commande. La valeur du paramètre FilePath
La valeur de SessionOption est une table de hachage. La valeur OutputBufferingMode est définie sur drop et la valeur IdleTimeout est définie sur 43200000 millisecondes (12 heures).
Pour obtenir les résultats des commandes et des scripts qui s’exécutent dans des sessions déconnectées, utilisez l’applet de commande Receive-PSSession
.
Paramètres
-AllowRedirection
Autorise la redirection de cette connexion vers un autre URI (Uniform Resource Identifier).
Lorsque vous utilisez le paramètre ConnectionURI, la destination distante peut retourner une instruction pour rediriger vers un AUTRE URI. Par défaut, PowerShell ne redirige pas les connexions, mais vous pouvez utiliser ce paramètre pour lui permettre de rediriger la connexion.
Vous pouvez également limiter le nombre de fois où la connexion est redirigée en modifiant la valeur d’option de session MaximumConnectionRedirectionCount. Utilisez le paramètre
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ApplicationName
Spécifie le segment de nom d’application de l’URI de connexion. Utilisez ce paramètre pour spécifier le nom de l’application lorsque vous n’utilisez pas le paramètre ConnectionURI dans la commande.
La valeur par défaut est la valeur de la variable de préférence $PSSessionApplicationName
sur l’ordinateur local. Si cette variable de préférence n’est pas définie, la valeur par défaut est WSMAN. Cette valeur est appropriée pour la plupart des utilisations. Pour plus d’informations, consultez about_Preference_Variables.
Le service WinRM utilise le nom de l’application pour sélectionner un écouteur pour traiter la demande de connexion. La valeur de ce paramètre doit correspondre à la valeur du URLPrefix propriété d’un écouteur sur l’ordinateur distant.
Type: | String |
Position: | Named |
Valeur par défaut: | $PSSessionApplicationName if set on the local computer, otherwise WSMAN |
Obligatoire: | False |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-ArgumentList
Fournit les valeurs des variables locales dans la commande. Les variables de la commande sont remplacées par ces valeurs avant l’exécution de la commande sur l’ordinateur distant. Entrez les valeurs dans une liste séparée par des virgules. Les valeurs sont associées à des variables dans l’ordre dans lequel elles sont répertoriées. L’alias de ArgumentList est Args.
Les valeurs du paramètre ArgumentList peuvent être des valeurs réelles, telles que 1024, ou elles peuvent être des références à des variables locales, telles que $max
.
Pour utiliser des variables locales dans une commande, utilisez le format de commande suivant :
{param($<name1>[, $<name2>]...) <command-with-local-variables>} -ArgumentList <value>
-ou- <local-variable>
Le mot clé
Type: | Object[] |
Alias: | Args |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-AsJob
Indique que cette applet de commande exécute la commande en tant que travail en arrière-plan sur un ordinateur distant. Utilisez ce paramètre pour exécuter des commandes qui prennent beaucoup de temps pour terminer.
Lorsque vous utilisez le paramètre AsJob, la commande retourne un objet qui représente le travail, puis affiche l’invite de commandes. Vous pouvez continuer à travailler dans la session pendant la fin du travail. Pour gérer le travail, utilisez les applets de commande *-Job
. Pour obtenir les résultats du travail, utilisez l’applet de commande Receive-Job
.
Le paramètre AsJob ressemble à l’aide de l’applet de commande Invoke-Command
pour exécuter une applet de commande Start-Job
à distance. Toutefois, avec AsJob, le travail est créé sur l’ordinateur local, même si le travail s’exécute sur un ordinateur distant. Les résultats du travail distant sont automatiquement retournés à l’ordinateur local.
Pour plus d’informations sur les travaux en arrière-plan PowerShell, consultez about_Jobs et about_Remote_Jobs.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Authentication
Spécifie le mécanisme utilisé pour authentifier les informations d’identification de l’utilisateur. L’authentification CredSSP est disponible uniquement dans Windows Vista, Windows Server 2008 et versions ultérieures du système d’exploitation Windows.
Les valeurs acceptables pour ce paramètre sont les suivantes :
- Faire défaut
- Basique
- Credssp
- Digérer
- Kerberos
- Négocier
- NegotiateWithImplicitCredential
La valeur par défaut est Default.
Pour plus d’informations sur les valeurs de ce paramètre, consultez 'énumération AuthenticationMechanism.
Prudence
L’authentification CredSSP (Credential Security Support Provider), dans laquelle les informations d’identification de l’utilisateur sont transmises à un ordinateur distant à authentifier, est conçue pour les commandes qui nécessitent une authentification sur plusieurs ressources, telles que l’accès à un partage réseau distant. Ce mécanisme augmente le risque de sécurité de l’opération à distance. Si l’ordinateur distant est compromis, les informations d’identification qui lui sont transmises peuvent être utilisées pour contrôler la session réseau. Pour plus d’informations, consultez fournisseur de support de sécurité des informations d’identification.
Type: | AuthenticationMechanism |
Valeurs acceptées: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos |
Position: | Named |
Valeur par défaut: | Default |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-CertificateThumbprint
Spécifie le certificat de clé publique numérique (X509) d’un compte d’utilisateur autorisé à se connecter à la session déconnectée. Entrez l’empreinte numérique du certificat.
Les certificats sont utilisés dans l’authentification basée sur les certificats client. Ils ne peuvent être mappés qu’à des comptes d’utilisateur locaux et ne fonctionnent pas avec des comptes de domaine.
Pour obtenir une empreinte numérique de certificat, utilisez une commande Get-Item
ou Get-ChildItem
dans le lecteur PowerShell Cert : .
Type: | String |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ComputerName
Spécifie les ordinateurs sur lesquels la commande s’exécute. La valeur par défaut est l’ordinateur local.
Lorsque vous utilisez le paramètre ComputerName, PowerShell crée une connexion temporaire utilisée uniquement pour exécuter la commande spécifiée, puis fermée. Si vous avez besoin d’une connexion persistante, utilisez le paramètre Session.
Tapez le nom NETBIOS, l’adresse IP ou le nom de domaine complet d’un ou plusieurs ordinateurs dans une liste séparée par des virgules. Pour spécifier l’ordinateur local, tapez le nom de l’ordinateur, localhost ou un point (.
).
Pour utiliser une adresse IP dans la valeur de Nom_ordinateur, la commande doit inclure le paramètre Credential. L’ordinateur doit être configuré pour le transport HTTPS ou l’adresse IP de l’ordinateur distant doit être inclus dans la liste winRM TrustedHosts de l’ordinateur local. Pour obtenir des instructions sur l’ajout d’un nom d’ordinateur à la liste TrustedHosts, consultez Comment ajouter un ordinateur à la liste d’hôtes approuvée.
Sur Windows Vista et les versions ultérieures du système d’exploitation Windows, pour inclure l’ordinateur local dans la valeur de computerName, vous devez exécuter PowerShell à l’aide de l’option Exécuter en tant qu’administrateur.
Type: | String[] |
Alias: | Cn |
Position: | 0 |
Valeur par défaut: | Local computer |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ConfigurationName
Spécifie la configuration de session utilisée pour le nouveau PSSession.
Entrez un nom de configuration ou l’URI de ressource complet pour une configuration de session. Si vous spécifiez uniquement le nom de configuration, l’URI de schéma suivant est ajouté : https://schemas.microsoft.com/PowerShell
.
La configuration de session d’une session se trouve sur l’ordinateur distant. Si la configuration de session spécifiée n’existe pas sur l’ordinateur distant, la commande échoue.
La valeur par défaut est la valeur de la variable de préférence $PSSessionConfigurationName
sur l’ordinateur local. Si cette variable de préférence n’est pas définie, la valeur par défaut est Microsoft.PowerShell. Pour plus d’informations, consultez about_Preference_Variables.
Type: | String |
Position: | Named |
Valeur par défaut: | $PSSessionConfigurationName if set on the local computer, otherwise Microsoft.PowerShell |
Obligatoire: | False |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-ConnectionUri
Spécifie un URI (Uniform Resource Identifier) qui définit le point de terminaison de connexion de la session. L’URI doit être complet.
Le format de cette chaîne est le suivant :
<Transport>://<ComputerName>:<Port>/<ApplicationName>
La valeur par défaut est la suivante :
https://localhost:5985/WSMAN
Si vous ne spécifiez pas d’URI de connexion, vous pouvez utiliser les paramètres UseSSL et port pour spécifier les valeurs d’URI de connexion.
Les valeurs valides pour le segment Transport
Si l’ordinateur de destination redirige la connexion vers un autre URI, PowerShell empêche la redirection, sauf si vous utilisez le paramètre AllowRedirection dans la commande.
Type: | Uri[] |
Alias: | URI, CU |
Position: | 0 |
Valeur par défaut: | https://localhost:5985/WSMAN |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Credential
Spécifie un compte d’utilisateur autorisé à effectuer cette action. La valeur par défaut est l’utilisateur actuel.
Tapez un nom d’utilisateur, tel que User01 ou Domain01\User01. Vous pouvez également entrer un objet PSCredential, tel qu’un objet généré par l’applet de commande Get-Credential
. Si vous tapez un nom d’utilisateur, cette applet de commande vous invite à entrer un mot de passe.
Type: | PSCredential |
Position: | Named |
Valeur par défaut: | Current user |
Obligatoire: | False |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-EnableNetworkAccess
Indique que cette applet de commande ajoute un jeton de sécurité interactif aux sessions de bouclage. Le jeton interactif vous permet d’exécuter des commandes dans la session de bouclage qui obtiennent des données à partir d’autres ordinateurs. Par exemple, vous pouvez exécuter une commande dans la session qui copie des fichiers XML d’un ordinateur distant vers l’ordinateur local.
Une session de bouclage est une psSession qui provient et se termine sur le même ordinateur. Pour créer une session de bouclage, omettez le paramètre ComputerName ou définissez sa valeur sur point (.
), localhost ou le nom de l’ordinateur local.
Par défaut, les sessions de bouclage sont créées à l’aide d’un jeton réseau, ce qui peut ne pas fournir l’autorisation suffisante pour s’authentifier auprès des ordinateurs distants.
Le paramètre EnableNetworkAccess est efficace uniquement dans les sessions de bouclage. Si vous utilisez EnableNetworkAccess lorsque vous créez une session sur un ordinateur distant, la commande réussit, mais le paramètre est ignoré.
Vous pouvez autoriser l’accès à distance dans une session de bouclage à l’aide de la valeur
Pour protéger l’ordinateur contre les accès malveillants, les sessions de bouclage déconnectées qui ont des jetons interactifs, qui sont ceux créés à l’aide de EnableNetworkAccess, peuvent être reconnectées uniquement à partir de l’ordinateur sur lequel la session a été créée. Les sessions déconnectées qui utilisent l’authentification CredSSP peuvent être reconnectées à partir d’autres ordinateurs. Pour plus d’informations, consultez Disconnect-PSSession
.
Ce paramètre a été introduit dans PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-FilePath
Spécifie un script local exécuté par cette applet de commande sur un ou plusieurs ordinateurs distants. Entrez le chemin d’accès et le nom du fichier du script, ou dirigez un chemin d’accès de script vers Invoke-Command
. Le script doit résider sur l’ordinateur local ou dans un répertoire auquel l’ordinateur local peut accéder. Utilisez ArgumentList pour spécifier les valeurs des paramètres dans le script.
Lorsque vous utilisez ce paramètre, PowerShell convertit le contenu du fichier de script spécifié en bloc de script, transmet le bloc de script à l’ordinateur distant et l’exécute sur l’ordinateur distant.
Type: | String |
Alias: | PSPath |
Position: | 1 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-HideComputerName
Indique que cette applet de commande omet le nom de l’ordinateur de chaque objet de l’affichage de sortie. Par défaut, le nom de l’ordinateur qui a généré l’objet apparaît dans l’affichage.
Ce paramètre affecte uniquement l’affichage de sortie. Il ne modifie pas l’objet.
Type: | SwitchParameter |
Alias: | HCN |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-InDisconnectedSession
Indique que cette applet de commande exécute une commande ou un script dans une session déconnectée.
Lorsque vous utilisez le paramètre InDisconnectedSession
Vous ne pouvez pas utiliser
Les commandes qui utilisent InDisconnectedSession retournent un objet PSSession qui représente la session déconnectée. Ils ne retournent pas la sortie de la commande. Pour vous connecter à la session déconnectée, utilisez les applets de commande Connect-PSSession
ou Receive-PSSession
. Pour obtenir les résultats des commandes exécutées dans la session, utilisez l’applet de commande Receive-PSSession
. Pour exécuter des commandes qui génèrent une sortie dans une session déconnectée, définissez la valeur de l’option de session OutputBufferingMode sur Drop. Si vous envisagez de vous connecter à la session déconnectée, définissez le délai d’inactivité dans la session afin qu’il fournisse suffisamment de temps pour vous connecter avant de supprimer la session.
Vous pouvez définir le mode de mise en mémoire tampon de sortie et le délai d’inactivité dans le paramètre SessionOption ou dans la variable de préférence $PSSessionOption
. Pour plus d’informations sur les options de session, consultez New-PSSessionOption
et about_Preference_Variables.
Pour plus d’informations sur la fonctionnalité Sessions déconnectées, consultez about_Remote_Disconnected_Sessions.
Ce paramètre a été introduit dans PowerShell 3.0.
Type: | SwitchParameter |
Alias: | Disconnected |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-InputObject
Spécifie l’entrée de la commande. Entrez une variable qui contient les objets ou tapez une commande ou une expression qui obtient les objets.
Lorsque vous utilisez le paramètre InputObject
Type: | PSObject |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-JobName
Spécifie un nom convivial pour le travail en arrière-plan. Par défaut, les travaux sont nommés Job<n>
, où <n>
est un nombre ordinal.
Si vous utilisez le paramètre JobName dans une commande, la commande est exécutée en tant que travail et Invoke-Command
retourne un objet de travail, même si vous n’incluez pas AsJob dans la commande.
Pour plus d’informations sur les travaux en arrière-plan PowerShell, consultez about_Jobs.
Type: | String |
Position: | Named |
Valeur par défaut: | Job<n> |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-NoNewScope
Indique que cette applet de commande exécute la commande spécifiée dans l’étendue actuelle. Par défaut, Invoke-Command
exécute des commandes dans leur propre étendue.
Ce paramètre est valide uniquement dans les commandes exécutées dans la session active, autrement dit, les commandes qui omettent les paramètres ComputerName
Ce paramètre a été introduit dans PowerShell 3.0.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Port
Spécifie le port réseau sur l’ordinateur distant utilisé pour cette commande. Pour vous connecter à un ordinateur distant, l’ordinateur distant doit être à l’écoute sur le port utilisé par la connexion. Les ports par défaut sont 5985, qui est le port WinRM pour HTTP et 5986, qui est le port WinRM pour HTTPS.
Avant d’utiliser un autre port, configurez l’écouteur WinRM sur l’ordinateur distant pour écouter sur ce port. Pour configurer l’écouteur, tapez les deux commandes suivantes à l’invite PowerShell :
Remove-Item -Path WSMan:\Localhost\listener\listener* -Recurse
New-Item -Path WSMan:\Localhost\listener -Transport http -Address * -Port \<port-number\>
N’utilisez pas le paramètre port, sauf si vous devez. Le port défini dans la commande s’applique à tous les ordinateurs ou sessions sur lesquels la commande s’exécute. Un autre paramètre de port peut empêcher l’exécution de la commande sur tous les ordinateurs.
Type: | Int32 |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ScriptBlock
Spécifie les commandes à exécuter. Placez les commandes dans des accolades { }
pour créer un bloc de script.
Ce paramètre est requis.
Par défaut, toutes les variables de la commande sont évaluées sur l’ordinateur distant. Pour inclure des variables locales dans la commande, utilisez ArgumentList.
Type: | ScriptBlock |
Alias: | Command |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-Session
Spécifie un tableau de sessions dans lequel cette applet de commande exécute la commande. Entrez une variable qui contient objets PSSession ou une commande qui crée ou obtient les objets PSSession, tels qu’une commande New-PSSession
ou Get-PSSession
.
Lorsque vous créez un psSession, PowerShell établit une connexion persistante à l’ordinateur distant. Utilisez un PSSession pour exécuter une série de commandes associées qui partagent des données. Pour exécuter une seule commande ou une série de commandes non liées, utilisez le paramètre ComputerName. Pour plus d’informations, consultez about_PSSessions.
Type: | PSSession[] |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-SessionName
Spécifie un nom convivial pour une session déconnectée. Vous pouvez utiliser le nom pour faire référence à la session dans les commandes suivantes, telles qu’une commande Get-PSSession
. Ce paramètre est valide uniquement avec le paramètre InDisconnectedSession.
Ce paramètre a été introduit dans PowerShell 3.0.
Type: | String[] |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-SessionOption
Spécifie les options avancées de la session. Entrez un objet SessionOption
Les valeurs par défaut des options sont déterminées par la valeur de la variable de préférence $PSSessionOption
, si elle est définie. Sinon, les valeurs par défaut sont établies par les options définies dans la configuration de session.
Les valeurs d’option de session sont prioritaires sur les valeurs par défaut pour les sessions définies dans la variable de préférence $PSSessionOption
et dans la configuration de session. Toutefois, elles ne sont pas prioritaires sur les valeurs maximales, les quotas ou les limites définies dans la configuration de session.
Pour obtenir une description des options de session qui incluent les valeurs par défaut, consultez New-PSSessionOption
. Pour plus d’informations sur la variable de préférence $PSSessionOption
, consultez about_Preference_Variables.
Pour plus d’informations sur les configurations de session, consultez about_Session_Configurations.
Type: | PSSessionOption |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-ThrottleLimit
Spécifie le nombre maximal de connexions simultanées qui peuvent être établies pour exécuter cette commande. Si vous omettez ce paramètre ou entrez une valeur de 0, la valeur par défaut 32 est utilisée.
La limite de limitation s’applique uniquement à la commande actuelle, et non à la session ou à l’ordinateur.
Type: | Int32 |
Position: | Named |
Valeur par défaut: | 32 |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-UseSSL
Indique que cette applet de commande utilise le protocole SSL (Secure Sockets Layer) pour établir une connexion à l’ordinateur distant. Par défaut, SSL n’est pas utilisé.
WS-Management chiffre tout le contenu PowerShell transmis sur le réseau. Le paramètre UseSSL est une protection supplémentaire qui envoie les données sur un protocole HTTPS, au lieu de HTTP.
Si vous utilisez ce paramètre, mais que SSL n’est pas disponible sur le port utilisé pour la commande, la commande échoue.
Type: | SwitchParameter |
Position: | Named |
Valeur par défaut: | False |
Obligatoire: | False |
Accepter l'entrée de pipeline: | False |
Accepter les caractères génériques: | False |
-VMId
Spécifie un tableau d’ID de machines virtuelles.
Type: | Guid[] |
Position: | 0 |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
-VMName
Spécifie un tableau de noms de machines virtuelles.
Type: | String[] |
Position: | Named |
Valeur par défaut: | None |
Obligatoire: | True |
Accepter l'entrée de pipeline: | True |
Accepter les caractères génériques: | False |
Entrées
Vous pouvez diriger une commande dans un bloc de script pour Invoke-Command
. Utilisez la variable automatique $Input
pour représenter les objets d’entrée dans la commande.
Sorties
System.Management.Automation.PSRemotingJob, System.Management.Automation.Runspaces.PSSession, or the output of the invoked command
Cette applet de commande retourne un objet de travail, si vous utilisez le paramètre AsJob. Si vous spécifiez le paramètre InDisconnectedSession
Notes
Sur Windows Vista et les versions ultérieures du système d’exploitation Windows, pour utiliser le paramètre ComputerName de Invoke-Command
pour exécuter une commande sur l’ordinateur local, vous devez exécuter PowerShell à l’aide de l’option Exécuter en tant qu’administrateur.
Lorsque vous exécutez des commandes sur plusieurs ordinateurs, PowerShell se connecte aux ordinateurs dans l’ordre dans lequel ils apparaissent dans la liste. Toutefois, la sortie de commande s’affiche dans l’ordre dans lequel elle est reçue des ordinateurs distants, ce qui peut être différent.
Les erreurs résultant de la commande qui Invoke-Command
exécutions sont incluses dans les résultats de la commande.
Les erreurs qui se terminent dans une commande locale sont traitées comme des erreurs de non-fin dans une commande distante. Cette stratégie garantit que la fin des erreurs sur un ordinateur ne ferme pas la commande sur tous les ordinateurs sur lesquels elle est exécutée. Cette pratique est utilisée même lorsqu’une commande distante est exécutée sur un seul ordinateur.
Si l’ordinateur distant n’est pas dans un domaine approuvé par l’ordinateur local, il se peut que l’ordinateur ne puisse pas authentifier les informations d’identification de l’utilisateur. Pour ajouter l’ordinateur distant à la liste des hôtes approuvés dans WS-Management, utilisez la commande suivante dans le fournisseur WSMAN
, où <Remote-Computer-Name>
est le nom de l’ordinateur distant :
Set-Item -Path WSMan:\Localhost\Client\TrustedHosts -Value \<Remote-Computer-Name\>
Lorsque vous déconnectez unPSSession
Une valeur Availability de None indique que vous pouvez vous connecter à la session. La valeur