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 parancssorban elküldött sztring nélkül Invoke-Expression
a rendszer változatlanul adja vissza (visszhangozza) a karakterláncot.
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. Invoke-Expression
A felhasználó által beírt parancs futtatásakor ellenőrizze, hogy a parancs biztonságosan futtatható-e a futtatás előtt. Általában célszerű előre definiált beviteli lehetőségekkel megtervezni a szkriptet a szabadkéményes bevitel engedélyezése helyett.
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. E nélkül Invoke-Expression
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 a változónév parancssorba való beírásának hatását mutatja. 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 testScript.ps1 nevű szkript futtatására használhatók Invoke-Expression
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ővel (|
) küldi el a parancssztringet 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 egyetlen idézőjelbe van foglalva, mert tartalmaz egy változót, $_
amely az aktuális objektumot jelöli. Ha idézőjelek közé lenne zárva, a változót a $_
változóban $Command
való mentés előtt az értéke váltaná fel.
4. példa: Példa parancsmag lekérése és futtatása
$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.
Egy másik parancsmag példájának futtatásához 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.
Feljegyzés
Ha a súgófájl példakódjának kimenete szerepel a példában, a PowerShell megpróbálja 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 parancsparaméter megadása kötelező.
Típus: | String |
Position: | 0 |
Alapértelmezett érték: | None |
Kötelező: | True |
Folyamatbemenet elfogadása: | True |
Helyettesítő karakterek elfogadása: | False |
Bevitelek
A parancsmagra meghívandó kifejezésnek egy sztringet is beszúrhat. Használja az $Input
automatikus változót a parancs bemeneti objektumainak megjelenítéséhez.
A parancsmagra meghívandó kifejezésnek megfelelő objektumot csövezhet. Használja az $Input
automatikus változót a parancs bemeneti objektumainak megjelenítéséhez.
Kimenetek
None
Ez a parancsmag nem ad vissza saját kimenetet, de a meghívott parancs kimenetet adhat vissza.
Jegyzetek
A Windows PowerShell a következő aliasokat Invoke-Expression
tartalmazza:
iex
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.