Invoke-Expression
Kör kommandon eller uttryck på den lokala datorn.
Syntax
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
Description
Cmdleten Invoke-Expression
utvärderar eller kör en angiven sträng som ett kommando och returnerar resultatet av uttrycket eller kommandot. Utan Invoke-Expression
returneras en sträng som skickas på kommandoraden (ekon) oförändrad.
Uttryck utvärderas och körs i det aktuella omfånget. Mer information finns i about_Scopes.
Försiktighet
Vidta rimliga försiktighetsåtgärder när du använder cmdleten Invoke-Expression
i skript. När du använder Invoke-Expression
för att köra ett kommando som användaren anger kontrollerar du att kommandot är säkert att köra innan du kör det. I allmänhet är det bäst att utforma skriptet med fördefinierade indataalternativ i stället för att tillåta freeform-indata.
Exempel
Exempel 1: Utvärdera ett uttryck
$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
...
Det här exemplet visar användningen av Invoke-Expression
för att utvärdera ett uttryck. Utan Invoke-Expression
skrivs uttrycket ut, men utvärderas inte.
Det första kommandot tilldelar värdet Get-Process
(en sträng) till variabeln $Command
.
Det andra kommandot visar effekten av att skriva variabelnamnet på kommandoraden. PowerShell ekar strängen.
Det tredje kommandot använder Invoke-Expression
för att utvärdera strängen.
Exempel 2: Kör ett skript på den lokala datorn
Invoke-Expression -Command "C:\ps-test\testscript.ps1"
"C:\ps-test\testscript.ps1" | Invoke-Expression
Dessa kommandon använder Invoke-Expression
för att köra ett skript, TestScript.ps1
, på den lokala datorn. De två kommandona är likvärdiga. Den första använder parametern Command för att ange vilket kommando som ska köras.
Den andra använder en pipelineoperator (|
) för att skicka kommandosträngen till Invoke-Expression
.
Exempel 3: Kör ett kommando i en variabel
$Command = 'Get-Process | where {$_.CPU -gt 1000}'
Invoke-Expression $Command
Det här exemplet kör en kommandosträng som sparas i variabeln $Command
.
Kommandosträngen omges av enkla citattecken eftersom den innehåller en variabel, $_
, som representerar det aktuella objektet. Om den omges av dubbla citattecken skulle variabeln $_
ersättas med dess värde innan den sparades i variabeln $Command
.
Exempel 4: Hämta och kör ett cmdlet-hjälpexempel
$Cmdlet_name = "Get-ComputerInfo"
$Example_number = 1
$Example_code = (Get-Help $Cmdlet_name).examples.example[($Example_number-1)].code
Invoke-Expression $Example_code
Det här kommandot hämtar och kör det första exemplet i hjälpavsnittet Get-EventLog
cmdlet.
Om du vill köra ett exempel på en annan cmdlet ändrar du värdet för variabeln $Cmdlet_name
till namnet på cmdleten. Och ändra variabeln $Example_number
till det exempelnummer som du vill köra. Kommandot misslyckas om exempelnumret inte är giltigt.
Not
Om exempelkoden från hjälpfilen har utdata i exemplet försöker PowerShell köra utdata tillsammans med koden och ett fel utlöses.
Parametrar
-Command
Anger vilket kommando eller uttryck som ska köras. Skriv kommandot eller uttrycket eller ange en variabel som innehåller kommandot eller uttrycket. Parametern Kommando krävs.
Typ: | String |
Position: | 0 |
Standardvärde: | None |
Obligatorisk: | True |
Godkänn pipeline-indata: | True |
Godkänn jokertecken: | False |
Indata
Du kan skicka en sträng som representerar uttrycket som ska anropas till den här cmdleten. Använd den $input
automatiska variabeln för att representera indataobjekten i kommandot.
Du kan skicka ett objekt som representerar uttrycket som ska anropas till den här cmdleten. Använd den $input
automatiska variabeln för att representera indataobjekten i kommandot.
Utdata
None
Den här cmdleten returnerar inga egna utdata, men det anropade kommandot kan returnera utdata.
Kommentarer
PowerShell innehåller följande alias för Invoke-Expression
:
- Alla plattformar:
iex
I de flesta fall anropar du uttryck med hjälp av PowerShells anropsoperator och uppnår samma resultat. Samtalsoperatorn är en säkrare metod. Mer information finns i about_Operators.