Invoke-Expression

Parancsokat vagy kifejezéseket futtat a helyi számítógépen.

Syntax

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

Description

A Invoke-Expression parancsmag egy megadott sztringet kiértékel vagy futtat parancsként, és visszaadja a kifejezés vagy parancs eredményeit. A Invoke-Expressionnélkül a parancssorban elküldött sztring változatlanul jelenik meg (visszhangzik).

A kifejezések kiértékelése és futtatása az aktuális hatókörben történik. További információ: about_Scopes.

Figyelemfelhívás

A parancsmag szkriptekben való használatakor Invoke-Expression ésszerű óvintézkedéseket kell tenni. Ha a felhasználó által beírt parancs futtatására használja Invoke-Expression , a futtatás előtt ellenőrizze, hogy a parancs biztonságosan futtatható-e. Általánosságban elmondható, hogy a legjobb, ha előre definiált beviteli lehetőségekkel tervezi meg a szkriptet, ahelyett, hogy engedélyezi a szabadkérelmű bevitelt.

Példák

1. példa: Kifejezés kiértékelése

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

Ez a példa egy kifejezés kiértékelésének Invoke-Expression használatát mutatja be. A Invoke-Expressionnélkül a kifejezés ki lesz nyomtatva, de nincs kiértékelve.

Az első parancs egy (sztring) értéket Get-Process rendel a $Command változóhoz.

A második parancs azt mutatja, hogy a változó nevét be kell írni a parancssorba. A PowerShell a sztringet visszhangozza.

A harmadik parancs a sztring kiértékelésére használja Invoke-Expression .

2. példa: Szkript futtatása a helyi számítógépen

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

Ezek a parancsok egy szkript futtatására használhatók Invoke-Expression TestScript.ps1 a helyi számítógépen. A két parancs egyenértékű. Az első a Parancs paraméter használatával adja meg a futtatandó parancsot. A második egy folyamatkezelő (|) használatával küldi el a parancssztringet a következőnek Invoke-Expression: .

3. példa: Parancs futtatása változóban

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

Ez a példa egy, a $Command változóba mentett parancssztringet futtat.

A parancssztring egy idézőjelek közé van foglalva, mert tartalmaz egy változót, $_amely az aktuális objektumot jelöli. Ha idézőjelek közé lenne adva, a változót a $_ változóban $Command való mentés előtti értéke váltaná fel.

4. példa: Példa parancsmag beolvasására és futtatására

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

Ez a parancs lekéri és futtatja az első példát a Get-EventLog parancsmag súgótémakörében.

Ha egy másik parancsmagra szeretne példát futtatni, módosítsa a $Cmdlet_name változó értékét a parancsmag nevére. Módosítsa a változót $Example_number a futtatni kívánt példaszámra. A parancs meghiúsul, ha a példaszám érvénytelen.

Megjegyzés

Ha a súgófájlból származó példakód kimenete szerepel a példában, a PowerShell megkísérli futtatni a kimenetet a kóddal együtt, és hibaüzenet jelenik meg.

Paraméterek

-Command

Megadja a futtatni kívánt parancsot vagy kifejezést. Írja be a parancsot vagy kifejezést, vagy adjon meg egy változót, amely tartalmazza a parancsot vagy kifejezést. A Parancs paraméter megadása kötelező.

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

Bevitelek

System.String or PSObject

A parancsot jelölő objektumot átirányíthatja a következőre Invoke-Expression: . Használja az $Input automatikus változót a parancs bemeneti objektumainak ábrázolásához.

Kimenetek

PSObject

A meghívott parancs által létrehozott kimenetet adja vissza (a Command paraméter értékét).

Jegyzetek

A legtöbb esetben a PowerShell hívási operátorával hív meg kifejezéseket, és ugyanazokat az eredményeket éri el. A híváskezelő biztonságosabb módszer. További információ: about_Operators.