Invoke-Expression
Komutları veya ifadeleri yerel bilgisayarda çalıştırır.
Syntax
Invoke-Expression
[-Command] <String>
[<CommonParameters>]
Description
Cmdlet, Invoke-Expression
belirtilen dizeyi komut olarak değerlendirir veya çalıştırır ve ifadenin veya komutun sonuçlarını döndürür. olmadan Invoke-Expression
, komut satırında gönderilen bir dize değiştirilmeden döndürülür (yankılanır).
İfadeler değerlendirilir ve geçerli kapsamda çalıştırılır. Daha fazla bilgi için bkz. about_Scopes.
Dikkat
Cmdlet'i betiklerde kullanırken Invoke-Expression
makul önlemler alın. kullanıcının girdiği bir komutu çalıştırmak için kullanırken Invoke-Expression
, çalıştırmadan önce komutun 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 kullanımı Invoke-Expression
gösterilmektedir. olmadan Invoke-Expression
ifade yazdırılır, ancak değerlendirilmez.
İlk komut değişkenine Get-Process
bir değeri (dize) $Command
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 kullanır Invoke-Expression
.
Ö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 bir betik (TestScript.ps1) çalıştırmak için kullanır Invoke-Expression
. İki komut eşdeğerdir. İlki, çalıştırılacak komutu belirtmek için Command parametresini kullanır.
İkincisi komut dizesini Invoke-Expression
adresine göndermek için bir işlem hattı işleci (|
) kullanır.
Örnek 3: Değişkende komut çalıştırma
$Command = 'Get-Process | where {$_.cpu -gt 1000}'
Invoke-Expression $Command
Bu örnek, değişkenine $Command
kaydedilmiş bir komut dizesi çalıştırır.
Komut dizesi, geçerli nesneyi temsil eden bir değişken $_
içerdiğinden tek tırnak içine alınır. Çift tırnak içine alınmışsa değişken, $_
değişkene $Command
kaydedilmeden önce değeriyle değiştirilirdi.
Örnek 4: 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, cmdlet Yardımı konusunun ilk örneğini Get-EventLog
alır ve çalıştırır.
Farklı bir cmdlet örneği çalıştırmak için değişkenin $Cmdlet_name
değerini cmdlet'in adıyla değiştirin. Değişkeni çalıştırmak istediğiniz örnek sayıyla değiştirin $Example_number
. Ö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.
Type: | String |
Position: | 0 |
Default value: | None |
Required: | True |
Accept pipeline input: | True |
Accept wildcard characters: | False |
Girişler
System.String or PSObject
komutunu temsil eden bir nesneyi öğesine Invoke-Expression
aktarabilirsiniz.
komutundaki $Input
giriş nesnelerini temsil etmek için otomatik değişkenini kullanın.
Çıkışlar
PSObject
Çağrılan komut ( Command parametresinin değeri) tarafından oluşturulan çıkışı döndürür.
Notlar
Çoğu durumda, PowerShell'in çağrı işlecini kullanarak ifadeleri çağırır ve aynı sonuçları elde edebilirsiniz. Çağrı işleci daha güvenli bir yöntemdir. Daha fazla bilgi için bkz. about_Operators.