Invoke-Expression
Executa comandos ou expressões no computador local.
Sintaxe
Invoke-Expression [-Command] <string> [<CommonParameters>]
Descrição
O cmdlet Invoke-Expression avalia ou executa uma cadeia de caracteres especificada como um comando e retorna os resultados da expressão ou do comando. Sem Invoke-Expression, uma cadeia de caracteres enviada à linha de comando seria retornada (ecoada) inalterada.
Parâmetros
-Command <string>
Especifica o comando ou expressão a ser executada. Digite o comando ou expressão ou insira uma variável que contenha o comando ou expressão. O parâmetro Command é obrigatório.
Necessário? |
true |
Posição? |
1 |
Valor padrão |
|
Aceitar entrada do pipeline? |
true (ByValue) |
Aceitar caracteres curinga? |
false |
<CommonParameters>
Esse cmdlet oferece suporte aos parâmetros comuns: -Verbose, -Debug, -ErrorAction, -ErrorVariable, -OutBuffer e -OutVariable. Para obter mais informações, consulte about_Commonparameters.
Entradas e saídas
O tipo de entrada é o tipo dos objetos que você pode canalizar para o cmdlet. O tipo de retorno é o tipo dos objetos que o cmdlet retorna.
Entradas |
System.String ou PSObject Você pode enviar um objeto que representa o comando para Invoke-Expression. Use a variável automática $input para representar os objetos de entrada no comando. |
Saídas |
PSObject Retorna a saída gerada pelo comando invocado (o valor do parâmetro Command). |
Observações
-- Uma expressão é uma instrução que pode ser avaliada e gera um resultado, como um comando do Windows PowerShell.
-- Tenha cuidado ao usar o cmdlet Invoke-Expression em scripts. Ao usar Invoke-Expression para executar um comando que o usuário insere, verifique se o comando está seguro antes de executá-lo. Em geral, é melhor criar seu script com opções de entrada predefinidas, em lugar de permitir entrada de forma livre.
Exemplo 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
...
Descrição
-----------
Este exemplo demonstra o uso de Invoke-Expression para avaliar uma expressão. Sem Invoke-Expression, a expressão é impressa, mas não avaliada.
O primeiro comando atribui um valor de "Get-Process" (uma cadeia de caracteres) à variável $command.
O segundo comando mostra o efeito da inserção do nome da variável na linha de comando. O Windows PowerShell ecoa a cadeia de caracteres.
O terceiro comando usa Invoke-Expression para avaliar a cadeia de caracteres.
Exemplo 2
C:\PS>invoke-expression -command "C:\ps-test\testscript.ps1"
C:\PS> "C:\ps-test\testscript.ps1" | invoke-expression
Descrição
-----------
Esses comandos usam Invoke-Expression para executar um script, TestScript.ps1, no computador local. Os dois comandos são equivalentes. O primeiro usa o parâmetro Command para especificar o comando a ser executado. O segundo comando usa um operador de pipeline (|) para enviar a cadeia de caracteres do comando para Invoke-Expression.
Exemplo 3
C:\PS>$cmd = 'get-process | where {$_.cpu -gt 1000}'
C:\PS> iex $command
Descrição
-----------
Este exemplo executa uma cadeia de caracteres de comando que é salva na variável $cmd.
A cadeia de caracteres de comando é colocada entre aspas simples porque inclui uma variável, $_, que representa o objeto atual. Se fosse colocada entre aspas duplas, a variável $_ seria substituída por seu valor antes de ser salva na cadeia de caracteres $command.
Exemplo 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
Descrição
-----------
Esse comando recupera e executa o primeiro exemplo do tópico de ajuda do cmdlet Get-EventLog.
Para executar um exemplo de um cmdlet diferente, altere o valor da variável $cmdlet_name para o nome do cmdlet. Além disso, altere a variável $example_number para o número do exemplo que você deseja executar. O comando irá falhar se o número do exemplo não for válido.