Aracılığıyla paylaş


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-Expressionifade 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-Expressionadresine 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-Expressionaktarabilirsiniz. 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.