Invoke-Expression

Voert opdrachten of expressies uit op de lokale computer.

Syntax

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

Description

De Invoke-Expression cmdlet evalueert of voert een opgegeven tekenreeks uit als een opdracht en retourneert de resultaten van de expressie of opdracht. Zonder Invoke-Expressionwordt een tekenreeks die op de opdrachtregel wordt verzonden, ongewijzigd geretourneerd (echoed).

Expressies worden geëvalueerd en uitgevoerd in het huidige bereik. Zie about_Scopes voor meer informatie.

Let op

Neem redelijke voorzorgsmaatregelen bij het gebruik van de Invoke-Expression cmdlet in scripts. Invoke-Expression Wanneer u een opdracht uitvoert die de gebruiker invoert, controleert u of de opdracht veilig kan worden uitgevoerd voordat u deze uitvoert. Over het algemeen is het raadzaam om uw script te ontwerpen met vooraf gedefinieerde invoeropties, in plaats van vrije-vorminvoer toe te staan.

Voorbeelden

Voorbeeld 1: Een expressie evalueren

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

In dit voorbeeld ziet u hoe Invoke-Expression u een expressie kunt evalueren. Zonder Invoke-Expressionwordt de expressie afgedrukt, maar niet geëvalueerd.

Met de eerste opdracht wordt een waarde van Get-Process (een tekenreeks) toegewezen aan de $Command variabele.

De tweede opdracht toont het effect van het typen van de naam van de variabele op de opdrachtregel. PowerShell echot de tekenreeks.

De derde opdracht gebruikt Invoke-Expression om de tekenreeks te evalueren.

Voorbeeld 2: Een script uitvoeren op de lokale computer

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

Deze opdrachten gebruiken Invoke-Expression om een script, TestScript.ps1, uit te voeren op de lokale computer. De twee opdrachten zijn equivalent. De eerste gebruikt de opdrachtparameter om de opdracht op te geven die moet worden uitgevoerd. De tweede maakt gebruik van een pijplijnoperator (|) om de opdrachttekenreeks naar Invoke-Expression.

Voorbeeld 3: Een opdracht uitvoeren in een variabele

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

In dit voorbeeld wordt een opdrachtreeks uitgevoerd die is opgeslagen in de $Command variabele.

De opdrachttekenreeks staat tussen enkele aanhalingstekens omdat deze een variabele bevat, $_die het huidige object vertegenwoordigt. Als deze tussen dubbele aanhalingstekens staat, wordt de variabele vervangen door de $_ waarde voordat deze in de $Command variabele werd opgeslagen.

Voorbeeld 4: Een Help-voorbeeld voor cmdlets ophalen en uitvoeren

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

Met deze opdracht wordt het eerste voorbeeld opgehaald en uitgevoerd in het Help-onderwerp van de Get-EventLog cmdlet.

Als u een voorbeeld van een andere cmdlet wilt uitvoeren, wijzigt u de waarde van de $Cmdlet_name variabele in de naam van de cmdlet. Wijzig de $Example_number variabele in het voorbeeldnummer dat u wilt uitvoeren. De opdracht mislukt als het voorbeeldnummer ongeldig is.

Notitie

Als de voorbeeldcode uit het Help-bestand uitvoer in het voorbeeld bevat, probeert PowerShell de uitvoer uit te voeren, samen met de code en wordt er een fout gegenereerd.

Parameters

-Command

Hiermee geeft u de opdracht of expressie die moet worden uitgevoerd. Typ de opdracht of expressie of voer een variabele in die de opdracht of expressie bevat. De opdrachtparameter is vereist.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Invoerwaarden

String

U kunt een tekenreeks doorsluisen die de expressie aanroept naar deze cmdlet. Gebruik de $Input automatische variabele om de invoerobjecten in de opdracht weer te geven.

PSObject

U kunt een object doorsluisen dat de expressie aanroept naar deze cmdlet. Gebruik de $Input automatische variabele om de invoerobjecten in de opdracht weer te geven.

Uitvoerwaarden

None

Deze cmdlet retourneert geen eigen uitvoer, maar de aangeroepen opdracht kan uitvoer retourneren.

Notities

PowerShell bevat de volgende aliassen voor Invoke-Expression:

  • Alle platforms:
    • iex

In de meeste gevallen roept u expressies aan met behulp van de aanroepoperator van PowerShell en krijgt u dezelfde resultaten. De aanroepoperator is een veiligere methode. Zie about_Operators voor meer informatie.