Partager via


Invoke-Expression

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

Syntax

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

Description

L’applet Invoke-Expression de commande é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.

Les expressions sont évaluées et exécutées dans l’étendue actuelle. Pour plus d’informations, consultez about_Scopes.

Attention

Prenez des précautions raisonnables lors de l’utilisation de l’applet de Invoke-Expression commande dans des scripts. Lorsque vous utilisez Invoke-Expression pour exécuter une commande que l’utilisateur entre, vérifiez que la commande peut être exécutée en toute sécurité 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 des entrées libres.

Exemples

Exemple 1 : Évaluer une expression

$Command = "Get-Process"
$Command

Get-Process

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 (une chaîne) à la $Command variable.

La deuxième commande illustre le résultat de l'entrée du nom de la variable sur la ligne de commande. 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

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

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

Exemple 3 : Exécuter une commande dans une variable

$Command = 'Get-Process | where {$_.cpu -gt 1000}'
Invoke-Expression $Command

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

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

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

$Cmdlet_name = "Get-ComputerInfo"
$Example_number = 1
$Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
Invoke-Expression $Example_code

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

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

Notes

Si l’exemple de code du fichier d’aide contient une sortie dans l’exemple, PowerShell tente d’exécuter la sortie avec le code et une erreur est générée.

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 obligatoire.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Entrées

String

Vous pouvez diriger une chaîne représentant l’expression à appeler vers cette applet de commande. Utilisez la $Input variable automatique pour représenter les objets d’entrée dans la commande.

PSObject

Vous pouvez diriger un objet représentant l’expression à appeler vers cette applet de commande. Utilisez la $Input variable automatique pour représenter les objets d’entrée dans la commande.

Sorties

None

Cette applet de commande ne retourne aucune sortie de sa propre, mais la commande appelée peut retourner une sortie.

Notes

PowerShell inclut les alias suivants pour Invoke-Expression:

  • Toutes les plateformes :
    • iex

Dans la plupart des cas, vous appelez des expressions à l’aide de l’opérateur d’appel de PowerShell et obtenez les mêmes résultats. L’opérateur d’appel est une méthode plus sûre. Pour plus d’informations, consultez about_Operators.