Compartilhar via


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.





Consulte também

Conceitos

Invoke-Command