Esegue comandi o espressioni nel computer locale.
Sintassi
Invoke-Expression [-Command] <string> [<CommonParameters>]
Descrizione
Il cmdlet Invoke-Expression valuta o esegue una stringa specificata come comando e restituisce i risultati dell'espressione o del comando. Senza Invoke-Expression, una stringa inviata alla riga di comando verrebbe restituita (ripetuta) invariata.
Parametri
-Command <string>
Specifica il comando o l'espressione da eseguire. Digitare il comando o l'espressione oppure immettere una variabile che li contiene. Il parametro Command è obbligatorio.
Obbligatorio? |
true |
Posizione? |
1 |
Valore predefinito |
|
Accettare input da pipeline? |
true (ByValue) |
Accettare caratteri jolly? |
false |
<CommonParameters>
Questo cmdlet supporta i parametri comuni -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Per ulteriori informazioni, vedere about_Commonparameters.
Input e output
Il tipo di input è il tipo degli oggetti che è possibile reindirizzare al cmdlet. Il tipo restituito è il tipo degli oggetti restituiti dal cmdlet.
Input |
System.String o PSObject È possibile reindirizzare un oggetto che rappresenta il comando a Invoke-Expression. Utilizzare la variabile automatica $input per rappresentare gli oggetti di input nel comando. |
Output |
PSObject Restituisce l'output generato dal comando richiamato (valore del parametro Command). |
Note
-- Un'espressione è un'istruzione che può essere valutata e produce un risultato, ad esempio un comando di Windows PowerShell.
-- Utilizzare con la dovuta cautela il cmdlet Invoke-Expression negli script. Quando si utilizza Invoke-Expression per eseguire un comando immesso dall'utente, verificare che il comando sia sicuro prima di eseguirlo. In genere, è consigliabile progettare lo script con opzioni di input predefinite, piuttosto che consentire l'input a mano libera.
Esempio 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 ... Descrizione ----------- In questo esempio viene illustrato l'utilizzo di Invoke-Expression per valutare un'espressione. Senza Invoke-Expression, l'espressione viene stampata, ma non valutata. Con il primo comando viene assegnato un valore "Get-Process" (stringa) alla variabile $command. Con il secondo comando viene illustrato l'effetto della digitazione del nome della variabile nella riga di comando. Windows PowerShell restituisce la stringa. Nel terzo comando viene utilizzato il cmdlet Invoke-Expression per valutare la stringa.
Esempio 2
C:\PS>invoke-expression -command "C:\ps-test\testscript.ps1" C:\PS> "C:\ps-test\testscript.ps1" | invoke-expression Descrizione ----------- In questi comandi viene utilizzato Invoke-Expression per eseguire uno script, TestScript.ps1, nel computer locale. I due comandi sono equivalenti. Nel primo viene utilizzato il parametro Command per specificare il comando da eseguire. Nel secondo viene utilizzato un operatore pipeline (|) per inviare la stringa di comando a Invoke-Expression.
Esempio 3
C:\PS>$cmd = 'get-process | where {$_.cpu -gt 1000}' C:\PS> iex $command Descrizione ----------- In questo esempio viene eseguita una stringa di comando salvata nella variabile $cmd. La stringa di comando è racchiusa tra virgolette singole perché include una variabile, $_, che rappresenta l'oggetto corrente. Se fosse racchiusa tra virgolette doppie, la variabile $_ verrebbe sostituita dal relativo valore prima di essere salvata nella stringa $command.
Esempio 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 Descrizione ----------- Con questo comando viene recuperato ed eseguito il primo esempio nell'argomento della guida del cmdlet Get-EventLog. Per eseguire un esempio di un altro cmdlet, sostituire il valore della variabile $cmdlet_name con il nome del cmdlet desiderato. Inoltre, impostare la variabile $example_number sul numero di esempio che si desidera eseguire. Il comando non verrà eseguito se il numero di esempio non è valido.
Vedere anche