Bagikan melalui


Invoke-Expression

Menjalankan perintah atau ekspresi pada komputer lokal.

Sintaks

Default (Default)

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

Deskripsi

cmdlet Invoke-Expression mengevaluasi atau menjalankan string tertentu sebagai perintah dan mengembalikan hasil ekspresi atau perintah. Tanpa Invoke-Expression, string yang dimasukkan di command line dieksekusi tanpa perubahan.

Ekspresi dievaluasi dan dijalankan dalam cakupan saat ini. Untuk informasi selengkapnya, lihat about_Scopes.

Caution

Lakukan tindakan pencegahan yang wajar saat menggunakan cmdlet Invoke-Expression dalam skrip. Saat menggunakan Invoke-Expression untuk menjalankan perintah yang dimasukkan pengguna, verifikasi bahwa perintah aman untuk dijalankan sebelum menjalankannya. Secara umum, yang terbaik adalah merancang skrip Anda dengan opsi input yang telah ditentukan sebelumnya, daripada mengizinkan input bentuk bebas.

Contoh

Contoh 1: Mengevaluasi ekspresi

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

Contoh ini menunjukkan penggunaan Invoke-Expression untuk mengevaluasi ekspresi. Tanpa Invoke-Expression, ekspresi dicetak, tetapi tidak dievaluasi.

Perintah pertama menetapkan nilai Get-Process (string) ke variabel $Command.

Perintah kedua menunjukkan efek mengetik nama variabel di baris perintah. PowerShell menampilkan string.

Perintah ketiga menggunakan Invoke-Expression untuk mengevaluasi string.

Contoh 2: Jalankan skrip di komputer lokal

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

Perintah ini menggunakan Invoke-Expression untuk menjalankan skrip, TestScript.ps1, di komputer lokal. Dua perintah tersebut setara. Yang pertama menggunakan parameter Perintah untuk menentukan perintah yang akan dijalankan. Yang kedua menggunakan operator alur (|) untuk mengirim string perintah ke Invoke-Expression.

Contoh 3: Jalankan perintah dalam variabel

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

Contoh ini menjalankan string perintah yang disimpan dalam variabel $Command.

String perintah diapit dalam tanda kutip tunggal karena mencakup variabel, $_, yang mewakili objek saat ini. Jika diapit dalam tanda kutip ganda, variabel $_ akan digantikan oleh nilainya sebelum disimpan dalam variabel $Command.

Contoh 4: Mendapatkan dan menjalankan contoh Bantuan cmdlet

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

Perintah ini mengambil dan menjalankan contoh pertama dalam topik Bantuan cmdlet Get-EventLog.

Untuk menjalankan contoh cmdlet yang berbeda, ubah nilai variabel $Cmdlet_name menjadi nama cmdlet. Dan, ubah variabel $Example_number ke nomor contoh yang ingin Anda jalankan. Perintah gagal jika nomor contoh tidak valid.

Nota

Jika kode contoh dari file bantuan memiliki output dalam contohnya, PowerShell mencoba menjalankan output tersebut bersama dengan kode dan kesalahan akan muncul.

Parameter

-Command

Menentukan perintah atau ekspresi yang akan dijalankan. Ketik perintah atau ekspresi atau masukkan variabel yang berisi perintah atau ekspresi. Parameter untuk Perintah diperlukan.

Properti parameter

Jenis:String
Nilai default:None
Mendukung wildcard:False
DontShow:False

Set parameter

(All)
Position:0
Wajib:True
Nilai dari alur:True
Nilai dari alur berdasarkan nama properti:False
Nilai dari argumen yang tersisa:False

CommonParameters

Cmdlet ini mendukung parameter umum: -Debug, -ErrorAction, -ErrorVariable, -InformationAction, -InformationVariable, -OutBuffer, -OutVariable, -PipelineVariable, -ProgressAction, -Verbose, -WarningAction, dan -WarningVariable. Untuk informasi selengkapnya, lihat about_CommonParameters.

Input

String

Anda dapat menyalurkan string yang mewakili ekspresi yang akan dipanggil ke cmdlet ini. Gunakan variabel otomatis $input untuk mewakili objek input dalam perintah.

PSObject

Anda dapat menyalurkan objek yang mewakili ekspresi untuk dipanggil ke cmdlet ini. Gunakan variabel otomatis $input untuk mewakili objek input dalam perintah.

Output

None

Cmdlet ini tidak mengembalikan outputnya sendiri, tetapi perintah yang dipanggil dapat mengembalikan output.

Catatan

PowerShell menyertakan alias berikut untuk Invoke-Expression:

  • Semua platform:
    • iex

Dalam kebanyakan kasus, Anda memanggil ekspresi menggunakan operator panggilan PowerShell dan mencapai hasil yang sama. Operator panggilan adalah metode yang lebih aman. Untuk informasi selengkapnya, lihat about_Operators.