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




Argomenti della Guida