Invoke-Expression
Menjalankan perintah atau ekspresi pada komputer lokal.
Sintaks
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
Deskripsi
Invoke-Expression
Cmdlet mengevaluasi atau menjalankan string tertentu sebagai perintah dan mengembalikan hasil ekspresi atau perintah. Tanpa Invoke-Expression
, string yang dikirimkan di baris perintah dikembalikan (digaungkan) tidak berubah.
Ekspresi dievaluasi dan dijalankan dalam cakupan saat ini. Untuk informasi selengkapnya, lihat about_Scopes.
Perhatian
Lakukan tindakan pencegahan yang wajar saat menggunakan Invoke-Expression
cmdlet 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 $Command
variabel.
Perintah kedua menunjukkan efek mengetik nama variabel di baris perintah. PowerShell menggemakan 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 digunakan 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 $Command
variabel.
String perintah diapit dalam tanda kutip tunggal karena menyertakan variabel, $_
, yang mewakili objek saat ini. Jika diapit dalam tanda kutip ganda, $_
variabel akan digantikan oleh nilainya sebelum disimpan dalam $Command
variabel.
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 Get-EventLog
topik Bantuan cmdlet.
Untuk menjalankan contoh cmdlet yang berbeda, ubah nilai $Cmdlet_name
variabel menjadi nama cmdlet. Dan, ubah $Example_number
variabel ke nomor contoh yang ingin Anda jalankan. Perintah gagal jika nomor contoh tidak valid.
Catatan
Jika kode contoh dari file bantuan memiliki output dalam contoh, PowerShell mencoba menjalankan output bersama dengan kode dan kesalahan akan dilemparkan.
Parameter
-Command
Menentukan perintah atau ekspresi yang akan dijalankan. Ketik perintah atau ekspresi atau masukkan variabel yang berisi perintah atau ekspresi. Parameter Perintah diperlukan.
Jenis: | String |
Position: | 0 |
Nilai default: | None |
Diperlukan: | True |
Terima input alur: | True |
Terima karakter wildcard: | False |
Input
Anda dapat menyalurkan string yang mewakili ekspresi untuk dipanggil ke cmdlet ini. $Input
Gunakan variabel otomatis untuk mewakili objek input dalam perintah.
Anda dapat menyalurkan objek yang mewakili ekspresi untuk dipanggil ke cmdlet ini. $Input
Gunakan variabel otomatis 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.