Invoke-Expression
Esegue comandi o espressioni nel computer locale.
Sintassi
Default (Impostazione predefinita)
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, viene restituita una stringa inviata alla riga di comando (eco).
Esempio
Esempio 1: Valutare un'espressione
PS C:\> $Command = "Get-Process"
PS C:\> $Command
Get-Process
PS C:\> 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 di Get-Process (stringa) alla variabile $Command.
Il secondo comando mostra l'effetto della digitazione del nome della variabile nella riga di comando. Windows PowerShell restituisce la stringa.
Il terzo comando usa Invoke-Expression per valutare la stringa.
Esempio 2: Eseguire uno script nel computer locale
PS C:\> Invoke-Expression -Command "C:\ps-test\testscript.ps1"
PS C:\> "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
Esempio 3: Eseguire un comando in una variabile
PS C:\> $Command = 'Get-Process | where {$_.cpu -gt 1000}'
PS C:\> Invoke-Expression $Command
In questo esempio viene eseguita una stringa di comando salvata nella variabile $Command.
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 $_ verrebbe sostituita dal relativo valore prima del salvataggio nella variabile $Command.
Esempio 4: Ottenere ed eseguire un esempio della Guida del cmdlet
PS C:\> $Cmdlet_name = "Get-EventLog"
PS C:\> $Example_number = 1
PS C:\> $Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
PS C:\> Invoke-Expression $Example_code
Questo comando recupera ed esegue il primo esempio nell'argomento della Guida del cmdlet Get-EventLog.
Per eseguire un esempio di cmdlet diverso, modificare il valore della variabile $Cmdlet_name impostando il nome del cmdlet. Modificare inoltre la variabile $Example_number impostando il numero di esempio da eseguire. Il comando avrà esito negativo se il numero di esempio non è valido.
Parametri
-Command
Specifica il comando o l'espressione da eseguire.
Digitare il comando o l'espressione oppure immettere una variabile contenente il comando o l'espressione.
È necessario il parametro command
Proprietà dei parametri
| Tipo: | String |
| Valore predefinito: | None |
| Supporta i caratteri jolly: | False |
| DontShow: | False |
Set di parametri
(All)
| Posizione: | 0 |
| Obbligatorio: | True |
| Valore dalla pipeline: | True |
| Valore dalla pipeline in base al nome della proprietà: | False |
| Valore dagli argomenti rimanenti: | False |
CommonParameters
Questo cmdlet supporta i parametri comuni: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Per altre informazioni, vedi about_CommonParameters.
Input
System.String or PSObject
È possibile inviare tramite pipe un oggetto che rappresenta il comando per Invoke-Expression. Usare la variabile automatica $Input per rappresentare gli oggetti di input nel comando .
Output
PSObject
Restituisce l'output generato dal comando richiamato (il valore del parametro Command).
Note
Un'espressione è un'istruzione che può essere valutata e produce un risultato, ad esempio un comando di Windows PowerShell.
Prendere precauzioni ragionevoli quando si usa il cmdlet Invoke-Expression
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, anziché consentire l'input a mano libera.