Compartilhar via


Invoke-Expression

Executa comandos ou expressões no computador local.

Sintaxe

Invoke-Expression
      [-Command] <String>
      [<CommonParameters>]

Description

O cmdlet Invoke-Expression avalia ou executa uma cadeia de caracteres especificada como um comando e retorna os resultados da expressão ou comando. Sem Invoke-Expression, uma cadeia de caracteres enviada na linha de comando seria retornada (ecoada) inalterada.

Exemplos

Exemplo 1: Avaliar uma expressão

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
...

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 de digitar o 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: executar um script no computador local

PS C:\> Invoke-Expression -Command "C:\ps-test\testscript.ps1"
PS C:\> "C:\ps-test\testscript.ps1" | Invoke-Expression

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 usa um operador de pipeline (|) para enviar a cadeia de caracteres de comando para Invoke-Expression.

Exemplo 3: executar um comando em uma variável

PS C:\> $Command = 'Get-Process | where {$_.cpu -gt 1000}'
PS C:\> Invoke-Expression $Command

Este exemplo executa uma cadeia de caracteres de comando salva na variável $Command.

A cadeia de caracteres de comando está entre aspas simples porque inclui uma variável, $_, que representa o objeto atual. Se estivesse entre aspas duplas, a variável $_ seria substituída por seu valor antes de ser salva na variável $Command.

Exemplo 4: Obter e executar um exemplo de Ajuda de 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

Esse comando recupera e executa o primeiro exemplo no tópico da 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. E altere a variável $Example_number para o número de exemplo que você deseja executar. O comando falhará se o número de exemplo não for válido.

Parâmetros

-Command

Especifica o comando ou a expressão a ser executada. Digite o comando ou expressão ou insira uma variável que contenha o comando ou a expressão. O parâmetro de Comando do é necessário.

Tipo:String
Cargo:0
Valor padrão:None
Obrigatório:True
Aceitar a entrada de pipeline:True
Aceitar caracteres curinga:False

Entradas

System.String or PSObject

Você pode canalizar um objeto que representa o comando para Invoke-Expression. Use a variável $Input automática 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 produz um resultado, como um comando do Windows PowerShell.

  • Tome precauções razoáveis 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 é seguro para ser executado antes de executá-lo. Em geral, é melhor projetar seu script com opções de entrada predefinidas, em vez de permitir entrada de forma livre.