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-ExpressionBu 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 $CommandBu ö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_codeBu 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.