Partager via


Invoke-Expression

Exécute des commandes ou des expressions sur l’ordinateur local.

Syntaxe

Invoke-Expression
      [-Command] <String>
      [<CommonParameters>]

Description

L’applet de commande Invoke-Expression évalue ou exécute une chaîne spécifiée en tant que commande et retourne les résultats de l’expression ou de la commande. Sans Invoke-Expression, une chaîne envoyée à la ligne de commande est retournée (écho) inchangée.

Exemples

Exemple 1 : Évaluer une expression

PS C:\> $Command = "Get-Process"
PS C:\> $Command
Get-Process
PS C:\> Invoke-Expression $Command
Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id   ProcessName
-------  ------    -----      ----- -----   ------     --   -----------
296       4       1572       1956    20       0.53     1348   AdtAgent
270       6       1328       800     34       0.06     2396   alg
67        2       620        484     20       0.22     716    ati2evxx
1060      15      12904      11840   74       11.48    892    CcmExec
1400      33      25280      37544   223      38.44    2564   communicator
...

Cet exemple illustre l’utilisation de Invoke-Expression pour évaluer une expression. Sans Invoke-Expression, l’expression est imprimée, mais pas évaluée.

La première commande affecte une valeur de Get-Process (chaîne) à la variable $Command.

La deuxième commande montre l’effet de taper le nom de la variable sur la ligne de commande. Windows PowerShell fait écho à la chaîne.

La troisième commande utilise Invoke-Expression pour évaluer la chaîne.

Exemple 2 : Exécuter un script sur l’ordinateur local

PS C:\> Invoke-Expression -Command "C:\ps-test\testscript.ps1"
PS C:\> "C:\ps-test\testscript.ps1" | Invoke-Expression

Ces commandes utilisent Invoke-Expression pour exécuter un script, TestScript.ps1, sur l’ordinateur local. Les deux commandes sont équivalentes. La première utilise le paramètre Command pour spécifier la commande à exécuter. La deuxième utilise un opérateur de pipeline (|) pour envoyer la chaîne de commande à Invoke-Expression.

Exemple 3 : Exécuter une commande dans une variable

PS C:\> $Command = 'Get-Process | where {$_.cpu -gt 1000}'
PS C:\> Invoke-Expression $Command

Cet exemple exécute une chaîne de commande enregistrée dans la variable $Command.

La chaîne de commande est placée entre guillemets simples, car elle inclut une variable, $_, qui représente l’objet actuel. Si elle était placée entre guillemets doubles, la variable $_ serait remplacée par sa valeur avant d’être enregistrée dans la variable $Command.

Exemple 4 : Obtenir et exécuter un exemple d’aide sur l’applet de commande

PS C:\> $Cmdlet_name = "Get-EventLog"
PS C:\> $Example_number = 1
PS C:\> $Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
PS C:\> Invoke-Expression $Example_code

Cette commande récupère et exécute le premier exemple dans la rubrique d’aide de l’applet de commande Get-EventLog.

Pour exécuter un exemple d’applet de commande différente, remplacez la valeur de la variable $Cmdlet_name par le nom de l’applet de commande. Ensuite, remplacez la variable $Example_number par l’exemple de numéro que vous souhaitez exécuter. La commande échoue si l’exemple de numéro n’est pas valide.

Paramètres

-Command

Spécifie la commande ou l’expression à exécuter. Tapez la commande ou l’expression ou entrez une variable qui contient la commande ou l’expression. Le paramètre Command est requis.

Type:String
Position:0
Valeur par défaut:None
Obligatoire:True
Accepter l'entrée de pipeline:True
Accepter les caractères génériques:False

Entrées

System.String or PSObject

Vous pouvez diriger un objet qui représente la commande vers Invoke-Expression . Utilisez la variable automatique $Input pour représenter les objets d’entrée dans la commande.

Sorties

PSObject

Retourne la sortie générée par la commande appelée (valeur du paramètre Command).

Notes

  • Une expression est une instruction qui peut être évaluée et produit un résultat, tel qu’une commande Windows PowerShell.

  • Prenez des précautions raisonnables lors de l’utilisation de l’applet de commande Invoke-Expression dans les scripts. Lorsque vous utilisez Invoke-Expression pour exécuter une commande entrée par l’utilisateur, vérifiez que la commande est sûre à exécuter avant de l’exécuter. En général, il est préférable de concevoir votre script avec des options d’entrée prédéfinies, plutôt que d’autoriser l’entrée de forme libre.