Delen via


Invoke-Expression

Voert opdrachten of expressies uit op de lokale computer.

Syntaxis

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

Voorbeelden

Voorbeeld 1: Een expressie evalueren

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

In dit voorbeeld ziet u het gebruik van Invoke-Expression om een expressie te 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 variabele $Command.

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

De derde opdracht maakt gebruik van Invoke-Expression om de tekenreeks te evalueren.

Voorbeeld 2: Een script uitvoeren op de lokale computer

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

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

Voorbeeld 3: Een opdracht uitvoeren in een variabele

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

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

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

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

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

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 variabele $Cmdlet_name in de naam van de cmdlet. En wijzig de variabele $Example_getal in het voorbeeldnummer dat u wilt uitvoeren. De opdracht mislukt als het voorbeeldnummer ongeldig is.

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 parameter Command is vereist.

Type:String
Position:0
Default value:None
Vereist:True
Pijplijninvoer accepteren:True
Jokertekens accepteren:False

Invoerwaarden

System.String or PSObject

U kunt een object doorsluisen dat de opdracht aan Invoke-Expressionvertegenwoordigt. Gebruik de $Input automatische variabele om de invoerobjecten in de opdracht weer te geven.

Uitvoerwaarden

PSObject

Retourneert de uitvoer die wordt gegenereerd door de aangeroepen opdracht (de waarde van de parameter Command).

Notities

  • Een expressie is een instructie die kan worden geĆ«valueerd en een resultaat kan opleveren, zoals een Windows PowerShell-opdracht.

  • Neem redelijke voorzorgsmaatregelen bij het gebruik van de cmdlet Invoke-Expression in scripts. Wanneer u Invoke-Expression gebruikt om een opdracht uit te voeren 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.