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-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
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-Expression
olmadan 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.ps1
bir 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
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.
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-Expression
iç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.