Exécute les commandes ou les 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 serait retournée (répétée) inchangée.

Paramètres

-Command <string>

Spécifie la commande ou l'expression à exécuter. Tapez la commande ou l'expression, ou entrez une variable contenant la commande ou l'expression. Le paramètre Command est obligatoire.

Obligatoire ?

true

Position ?

1

Valeur par défaut

Accepter l'entrée de pipeline ?

true (ByValue)

Accepter les caractères génériques ?

false

<CommonParameters>

Cette applet de commande prend en charge les paramètres courants : -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer et -OutVariable. Pour plus d'informations, consultez about_Commonparameters.

Entrées et sorties

Le type d'entrée est le type des objets que vous pouvez diriger vers l'applet de commande. Le type de retour est le type des objets que l'applet de commande retourne.

Entrées

System.String ou PSObject

Vous pouvez diriger un objet représentant 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).

Remarques

-- Une expression est une instruction qui peut être évaluée et qui produit un résultat, telle qu'une commande Windows PowerShell.

-- Soyez vigilant lorsque vous utilisez l'applet de commande Invoke-Expression dans des scripts. Lorsque vous utilisez Invoke-Expression pour exécuter une commande entrée par l'utilisateur, vérifiez que la commande est sûre avant de l'exécuter. En général, il vaut mieux concevoir votre script avec des options d'entrée prédéfinies, plutôt que d'autoriser les entrées libres.

Exemple 1

C:\PS>$command = "Get-Process"

C:\PS> $command
Get-Process


C:\PS> 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
...

Description
-----------
Cet exemple illustre l'utilisation de l'applet de commande Invoke-Expression pour évaluer une expression. Sans Invoke-Expression, l'expression est imprimée, mais non évaluée.

La première commande attribue la valeur « Get-Process » (une chaîne) à la variable $command. 

La deuxième commande montre le résultat obtenu lorsque l'on tape le nom de la variable sur la ligne de commande. Windows PowerShell répète la chaîne.

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






Exemple 2

C:\PS>invoke-expression -command "C:\ps-test\testscript.ps1"

C:\PS> "C:\ps-test\testscript.ps1" | invoke-expression

Description
-----------
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

C:\PS>$cmd = 'get-process | where {$_.cpu -gt 1000}'

C:\PS> iex $command

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

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






Exemple 4

C:\PS>$cmdlet_name = "get-eventlog"

C:\PS> $example_number = 1

C:\PS> $example_code = (get-help $cmdlet_name).examples.example[($example_number-1)].code

C:\PS> invoke-expression $example_code

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

Pour exécuter un exemple d'une autre applet de commande, remplacez la valeur de la variable $cmdlet_name par le nom de l'applet de commande en question. Ensuite, remplacez la variable $example_number par le numéro de l'exemple que vous souhaitez exécuter. Si le numéro d'exemple n'est pas valide, la commande échoue.






Voir aussi




Table des matières