Invoke-Expression (Microsoft.PowerShell.Utility)


Invoke-Expression

Modül:
Microsoft.PowerShell.Utility

Yerel bilgisayarda komutları veya ifadeleri çalıştırır.

Sözdizimi

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

Tanım

Invoke-Expression cmdlet'i belirtilen bir dizeyi komut olarak değerlendirir veya çalıştırır ve ifadenin veya komutun sonuçlarını döndürür. Invoke-Expression olmadan, 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

Komut dosyalarında 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ıldığında, çalıştırmadan önce komutun güvenli olduğundan emin olun. Genel olarak, komut dosyanızı serbest biçimli girişe izin vermek yerine önceden tanımlanmış giriş seçenekleriyle tasarlamak en iyisidir.

Örnekler

Örnek 1: Bir ifadeyi değerlendirin

$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 örnek, bir ifadeyi değerlendirmek için Invoke-Expression'ın kullanımını gösterir. Invoke-Expression olmadan ifade yazdırılır ancak değerlendirilmez.

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

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

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

Örnek 2: Yerel bilgisayarda bir komut dosyası çalıştırma

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

Bu komutlar, yerel bilgisayarda TestScript.ps1 adlı bir komut dosyasını ç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 Invoke-Expression'a göndermek için bir ardışık düzen operatörü (|) kullanır.

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

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

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

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

Örnek 4: Bir cmdlet Yardımı örneği 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ı konusundaki ilk örneği alır ve çalıştırır.

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

Not

Yardım dosyasındaki örnek kodun örnekte çıktısı varsa, PowerShell çıktıyı kodla birlikte çalıştırmayı dener ve bir hata atılır.

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.

Tip :

String

Konum:

0

Varsayılan değer:

None

Gerekli:

True

Boru hattı girişini kabul edin:

True

Joker karakterleri kabul et:

False

Girişler

Dize

Bu cmdlet'e çağrılacak ifadeyi temsil eden bir dize aktarabilirsiniz. Komuttaki giriş nesnelerini temsil etmek için $Input otomatik değişkenini kullanın.

PSObject

Bu cmdlet'e çağrılacak ifadeyi temsil eden bir nesneyi aktarabilirsiniz. Komuttaki giriş nesnelerini temsil etmek için $Input otomatik değişkenini kullanın.

Çıkışlar

Yok

Bu cmdlet kendine ait bir çıktı döndürmez, ancak çağrılan komut çıktı döndürebilir.

Notlar

PowerShell, Invoke-Expression için aşağıdaki takma adları içerir:

  • Tüm platformlar:

      iex

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

İlgili makaleler