Invoke-Expression
Esegue comandi o espressioni nel computer locale.
Sintassi
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
Descrizione
Il Invoke-Expression
cmdlet valuta o esegue una stringa specificata come comando e restituisce i risultati dell'espressione o del comando. Senza Invoke-Expression
, viene restituita una stringa inviata alla riga di comando (con eco).
Le espressioni vengono valutate ed eseguite nell'ambito corrente. Per altre informazioni, vedere about_Scopes.
Attenzione
Prendere precauzioni ragionevoli quando si usa il Invoke-Expression
cmdlet negli script. Quando si usa Invoke-Expression
per eseguire un comando immesso dall'utente, verificare che il comando sia sicuro da eseguire prima di eseguirlo. In generale, è consigliabile progettare lo script con opzioni di input predefinite, invece di consentire l'input manuale.
Esempio
Esempio 1: Valutare un'espressione
$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
...
In questo esempio viene illustrato l'uso di Invoke-Expression
per valutare un'espressione. Senza Invoke-Expression
, l'espressione viene stampata, ma non valutata.
Il primo comando assegna un valore ( Get-Process
stringa) alla $Command
variabile.
Il secondo comando mostra l'effetto della digitazione del nome della variabile nella riga di comando. PowerShell restituisce la stringa.
Il terzo comando usa Invoke-Expression
per valutare la stringa.
Esempio 2: Eseguire uno script nel computer locale
Invoke-Expression -Command "C:\ps-test\testscript.ps1"
"C:\ps-test\testscript.ps1" | Invoke-Expression
Questi comandi usano Invoke-Expression
per eseguire uno script, TestScript.ps1, nel computer locale. I due comandi sono equivalenti. Il primo usa il parametro Command per specificare il comando da eseguire.
Il secondo usa un operatore pipeline (|
) per inviare la stringa di comando a Invoke-Expression
.
Esempio 3: Eseguire un comando in una variabile
$Command = 'Get-Process | where {$_.cpu -gt 1000}'
Invoke-Expression $Command
In questo esempio viene eseguita una stringa di comando salvata nella $Command
variabile .
La stringa di comando è racchiusa tra virgolette singole perché include una variabile, $_
, che rappresenta l'oggetto corrente. Se fosse racchiuso tra virgolette doppie, la $_
variabile verrà sostituita dal relativo valore prima del salvataggio nella $Command
variabile.
Esempio 4: Ottenere ed eseguire un esempio della Guida del cmdlet
$Cmdlet_name = "Get-ComputerInfo"
$Example_number = 1
$Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
Invoke-Expression $Example_code
Questo comando recupera ed esegue il primo esempio nell'argomento della Guida del Get-EventLog
cmdlet.
Per eseguire un esempio di cmdlet diverso, modificare il valore della $Cmdlet_name
variabile impostando il nome del cmdlet. Modificare la $Example_number
variabile con il numero di esempio che si vuole eseguire. Il comando ha esito negativo se il numero di esempio non è valido.
Nota
Se il codice di esempio del file della Guida ha output nell'esempio, PowerShell tenta di eseguire l'output insieme al codice e verrà generato un errore.
Parametri
-Command
Specifica il comando o l'espressione da eseguire. Digitare il comando o l'espressione o immettere una variabile che contiene il comando o l'espressione. Il parametro Command è obbligatorio.
Tipo: | String |
Posizione: | 0 |
Valore predefinito: | None |
Necessario: | True |
Accettare l'input della pipeline: | True |
Accettare caratteri jolly: | False |
Input
È possibile inviare tramite pipe una stringa che rappresenta l'espressione da richiamare a questo cmdlet. Usare la $Input
variabile automatica per rappresentare gli oggetti di input nel comando .
È possibile inviare tramite pipe un oggetto che rappresenta l'espressione da richiamare a questo cmdlet. Usare la $Input
variabile automatica per rappresentare gli oggetti di input nel comando .
Output
None
Questo cmdlet non restituisce alcun output autonomo, ma il comando richiamato può restituire l'output.
Note
PowerShell include gli alias seguenti per Invoke-Expression
:
- Tutte le piattaforme:
iex
Nella maggior parte dei casi, si richiamano espressioni usando l'operatore di chiamata di PowerShell e si ottengono gli stessi risultati. L'operatore di chiamata è un metodo più sicuro. Per altre informazioni, vedere about_Operators.