Partilhar via


Invoke-Expression

Executa comandos ou expressões no computador local.

Sintaxe

Default (Predefinição)

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 é retornada (ecoada) inalterada.

As expressões são avaliadas e executadas no escopo atual. Para obter mais informações, consulte about_Scopes.

Atenção

Tome precauções razoáveis ao usar o cmdlet Invoke-Expression em scripts. Ao usar Invoke-Expression para executar um comando inserido pelo usuário, 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 a entrada de forma livre.

Exemplos

Exemplo 1: Avaliar uma expressão

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

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

Invoke-Expression -Command "C:\ps-test\testscript.ps1"
"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 comando para Invoke-Expression.

Exemplo 3: Executar um comando em uma variável

$Command = 'Get-Process | where {$_.CPU -gt 1000}'
Invoke-Expression $Command

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

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

Exemplo 4: Obter e executar um exemplo da Ajuda do cmdlet

$Cmdlet_name = "Get-ComputerInfo"
$Example_number = 1
$Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
Invoke-Expression $Example_code

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

Observação

Se o código de exemplo do arquivo de ajuda tiver saída no exemplo, o PowerShell tentará executar a saída junto com o código e um erro será lançado.

Parâmetros

-Command

Especifica o comando ou expressão a ser executado. Digite o comando ou expressão ou insira uma variável que contenha o comando ou expressão. O parâmetro Command é obrigatório.

Propriedades dos parâmetros

Tipo:String
Default value:None
Suporta carateres universais:False
NãoMostrar:False

Conjuntos de parâmetros

(All)
Position:0
Obrigatório:True
Valor do pipeline:True
Valor do pipeline por nome de propriedade:False
Valor dos restantes argumentos:False

CommonParameters

Este cmdlet suporta os parâmetros comuns: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction e -WarningVariable. Para obter mais informações, consulte about_CommonParameters.

Entradas

String

Você pode canalizar uma cadeia de caracteres que represente a expressão a ser invocada para este cmdlet. Use a variável automática $input para representar os objetos de entrada no comando.

PSObject

Você pode canalizar um objeto que representa a expressão a ser invocada para este cmdlet. Use a variável automática $input para representar os objetos de entrada no comando.

Saídas

None

Este cmdlet não retorna nenhuma saída própria, mas o comando invocado pode retornar uma saída.

Notas

O PowerShell inclui os seguintes aliases para Invoke-Expression:

  • Todas as plataformas:
    • iex

Na maioria dos casos, você invoca expressões usando o operador de chamada do PowerShell e obtém os mesmos resultados. O operador de chamada é um método mais seguro. Para obter mais informações, consulte sobre_Operadores.