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.

Type:String
Position:0
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

Input

String

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

PSObject

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.