Invoke-Expression
Exécute des commandes ou des expressions sur l’ordinateur local.
Syntaxe
Default (Par défaut)
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 soumise à la ligne de commande est renvoyée (écho) inchangée.
Les expressions sont évaluées et exécutées dans l'étendue actuelle. Pour plus d’informations, consultez about_Scopes.
Avertissement
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.
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 (chaîne) à la variable $Command.
La deuxième commande montre l’effet de taper le nom de la variable sur la ligne de commande. PowerShell renvoie 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 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 seconde 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 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
$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 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 le numéro d’exemple que vous voulez exécuter. La commande échoue si l’exemple de numéro n’est pas valide.
Remarque
Si le code d'exemple du fichier d'aide génère une sortie dans l'exemple, PowerShell tente d’exécuter la sortie avec le code et cela provoquera une erreur.
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.
Propriétés du paramètre
| Type: | String |
| Valeur par défaut: | None |
| Prend en charge les caractères génériques: | False |
| DontShow: | False |
Jeux de paramètres
(All)
| Position: | 0 |
| Obligatoire: | True |
| Valeur du pipeline: | True |
| Valeur du pipeline par nom de propriété: | False |
| Valeur des arguments restants: | False |
CommonParameters
Cette applet de commande prend en charge les paramètres courants : -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction et -WarningVariable. Pour plus d’informations, consultez about_CommonParameters.
Entrées
String
Vous pouvez transmettre une chaîne représentant l’expression destinée à être invoquée par ce cmdlet. Utilisez la variable automatique $input 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 variable automatique $input pour représenter les objets d’entrée dans la commande.
Sorties
None
Cette applet de commande ne retourne aucune sortie propre, mais la commande appelée peut retourner la 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, veuillez consulter la section about_Operators.