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