Aracılığıyla paylaş


Invoke-Expression

Komutları veya ifadeleri yerel bilgisayarda çalıştırır.

Sözdizimi

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

Description

Invoke-Expression cmdlet'i, belirtilen dizeyi komut olarak değerlendirir veya çalıştırır ve ifadenin veya komutun sonuçlarını döndürür. Invoke-Expressionolmadan, komut satırında gönderilen bir dize değişmeden döndürülür (yankılanır).

İfadeler geçerli kapsamda değerlendirilir ve çalıştırılır. Daha fazla bilgi için bkz. about_Scopes.

Dikkat

Betiklerde Invoke-Expression cmdlet'ini kullanırken makul önlemleri alın. Kullanıcının girdiği bir komutu çalıştırmak için Invoke-Expression kullanırken, çalıştırmadan önce komutun çalıştırılmasının güvenli olduğunu doğrulayın. Genel olarak, betiğinizi serbest biçimli girişe izin vermek yerine önceden tanımlanmış giriş seçenekleriyle tasarlamak en iyisidir.

Örnekler

Örnek 1: İfadeyi değerlendirme

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

Bu örnekte, bir ifadeyi değerlendirmek için Invoke-Expression kullanımı gösterilmektedir. Invoke-Expressionolmadan ifade yazdırılır, ancak değerlendirilmez.

İlk komut, Get-Process değişkenine bir $Command (dize) değeri atar.

İkinci komut, komut satırına değişken adını yazmanın etkisini gösterir. PowerShell dizeyi yankılar.

Üçüncü komut, dizeyi değerlendirmek için Invoke-Expression kullanır.

Örnek 2: Yerel bilgisayarda betik çalıştırma

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

Bu komutlar, yerel bilgisayarda TestScript.ps1bir betik çalıştırmak için Invoke-Expression kullanır. İki komut eşdeğerdir. İlki, çalıştırılacak komutu belirtmek için Command parametresini kullanır. İkincisi, komut dizesini |göndermek için bir işlem hattı işleci (Invoke-Expression) kullanır.

Örnek 3: Değişkende komut çalıştırma

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

Bu örnek, $Command değişkenine kaydedilmiş bir komut dizesi çalıştırır.

Komut dizesi, geçerli nesneyi temsil eden $_değişkenini içerdiğinden tek tırnak içine alınır. Çift tırnak içine alınmışsa, $_ değişkeni $Command değişkenine kaydedilmeden önce değeriyle değiştirilirdi.

Örnek 4: Cmdlet Yardım örneğini alma ve çalıştırma

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

Bu komut, Get-EventLog cmdlet Yardım konusunun ilk örneğini alır ve çalıştırır.

Farklı bir cmdlet örneği çalıştırmak için, $Cmdlet_name değişkeninin değerini cmdlet'in adıyla değiştirin. Ayrıca, $Example_number değişkenini çalıştırmak istediğiniz örnek sayıyla değiştirin. Örnek sayı geçerli değilse komut başarısız olur.

Not

Yardım dosyasındaki örnek kodda örnekte çıkış varsa, PowerShell kodun yanı sıra çıkışı çalıştırmayı dener ve bir hata oluşur.

Parametreler

-Command

Çalıştırılacak komutu veya ifadeyi belirtir. Komutu veya ifadeyi yazın ya da komutu veya ifadeyi içeren bir değişken girin. Command parametresi gereklidir.

Tür:String
Position:0
Default value:None
Gerekli:True
İşlem hattı girişini kabul et:True
Joker karakterleri kabul et:False

Girişler

String

Bu cmdlet'e çağırmak için ifadeyi temsil eden bir dizeye kanal oluşturabilirsiniz. komuttaki giriş nesnelerini göstermek için $input otomatik değişkenini kullanın.

PSObject

Bu cmdlet'e çağırmak için ifadeyi temsil eden bir nesneye kanal oluşturabilirsiniz. komuttaki giriş nesnelerini göstermek için $input otomatik değişkenini kullanın.

Çıkışlar

None

Bu cmdlet kendi çıkışını döndürmez, ancak çağrılan komut çıkış döndürebilir.

Notlar

PowerShell, Invoke-Expressioniçin aşağıdaki diğer adları içerir:

  • Tüm platformlar:
    • iex

Çoğu durumda, PowerShell'in çağrı işlecini kullanarak ifadeleri çağırır ve aynı sonuçları elde edersiniz. Çağrı işleci daha güvenli bir yöntemdir. Daha fazla bilgi için bkz. about_Operators.