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