Bagikan melalui


Invoke-Expression

Menjalankan perintah atau ekspresi pada komputer lokal.

Sintaks

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 dikirimkan di baris perintah dikembalikan (digaungkan) tidak berubah.

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

Hati

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

String

Anda dapat menyalurkan string yang mewakili ekspresi untuk 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.