Cmdlet’e Genel Bakış

Cmdlet, PowerShell ortamında kullanılan basit bir komutdur. PowerShell çalışma zamanı, bu cmdlet'leri komut satırına sağlanan otomasyon betikleri bağlamında çağırır. PowerShell çalışma zamanı bunları PowerShell API'leri aracılığıyla program aracılığıyla da çağırır.

Cmdlet’ler

Cmdlet'ler bir eylem gerçekleştirin ve Microsoft .NET işlem hattında bir sonraki komuta bir nesne geri döner. Cmdlet, PowerShell'in işlem hattı semantiğine katılan tek bir komuttır. Buna ikili (C#) cmdlet'ler, gelişmiş betik işlevleri, CDXML ve İş Akışları dahildir.

Bu SDK belgelerinde, C# ile yazılmış ikili cmdlet'ler oluşturma açıklanmıştır. Betik tabanlı cmdlet'ler hakkında bilgi için bkz:

İkili cmdlet oluşturmak için, iki özelleştirilmiş cmdlet temel sınıfından türetilen bir cmdlet sınıfı uygulamalısiniz. Türetilmiş sınıf şunları gerekir:

  • Türetilmiş sınıfı cmdlet olarak tanımlayan bir öznitelik bildir.
  • Ortak özellikleri cmdlet parametreleri olarak tanımlayan özniteliklerle birlikte sıraladığınız ortak özellikleri tanımlayın.
  • Kayıtları işlemeye yönelik giriş işleme yöntemlerinden birini veya daha fazlasını geçersiz kılın.

Import-Module cmdlet'ini kullanarak sınıfını içeren derlemeyi doğrudan yükleyebilirsiniz veya System.Management.Automation.Runspaces.Initialsessionstate API'sini kullanarak derlemeyi yüken bir konak uygulaması oluşturabilirsiniz. Her iki yöntem de cmdlet'in işlevselliğine program aracılığıyla ve komut satırı erişimi sağlar.

Cmdlet Koşulları

PowerShell cmdlet belgelerinde aşağıdaki terimler sıklıkla kullanılır:

Cmdlet özniteliği

Cmdlet sınıfını cmdlet olarak bildiren bir .NET özniteliği. PowerShell isteğe bağlı olan birkaç başka öznitelik kullanıyor olsa da, Cmdlet özniteliği gereklidir. Bu öznitelik hakkında daha fazla bilgi için bkz. Cmdlet Öznitelik Bildirimi.

Cmdlet parametresi

Kullanıcı veya cmdlet'i çalıştıran uygulama tarafından kullanılabilen parametreleri tanımlayan genel özellikler. Cmdlet'ler gerekli, adlandırılmış, konumsal ve anahtar parametrelerine sahip olabilir. Anahtar parametreleri, yalnızca parametreler çağrıda belirtilmişse değerlendirilen parametreleri tanımlamaya olanak sağlar. Farklı parametre türleri hakkında daha fazla bilgi için bkz. Cmdlet Parametreleri.

Parametre kümesi

Belirli bir eylemi gerçekleştirmek için aynı komutta kullanılan bir parametre grubu. Bir cmdlet birden çok parametre kümesine sahip olabilir, ancak her parametre kümesi benzersiz en az bir parametreye sahip olmalıdır. İyi cmdlet tasarımı, benzersiz parametrenin de gerekli bir parametre olduğunu kesinlikle önerir. Parametre kümeleri hakkında daha fazla bilgi için bkz. Cmdlet Parametre Kümeleri.

Dinamik parametre

Çalışma zamanında cmdlet'e eklenen bir parametre. Genellikle, başka bir parametre belirli bir değere ayarlanırsa, dinamik parametreler cmdlet'e eklenir. Dinamik parametreler hakkında daha fazla bilgi için bkz. Cmdlet Dinamik Parametreleri.

Giriş işleme yöntemleri

System.Management.Automation.Cmdlet sınıfı, kayıtları işlemede kullanılan aşağıdaki sanal yöntemleri sağlar. Türetilen tüm cmdlet sınıfları ilk üç yöntemden birini veya daha fazlasını geçersiz kılmalı:

Bu yöntemler hakkında daha fazla bilgi için bkz. Cmdlet Giriş İşleme Yöntemleri.

Bir cmdlet'i uygulayan bu giriş işleme yöntemlerinden en az birini geçersiz kılmalısiniz. Genellikle, ProcessRecord() cmdlet'inin işlemektedir her kayıt için çağrıl olduğundan geçersiz kılınan yöntemdir. Buna karşılık BeginProcessing() yöntemi ve EndProcessing() yöntemi, kayıtların ön işleme veya son işleme işlemlerini gerçekleştirmek için bir kez çağrılır. Bu yöntemler hakkında daha fazla bilgi için bkz. Giriş İşleme Yöntemleri.

ShouldProcess özelliği

PowerShell, cmdlet sistemde değişiklik olmadan önce kullanıcıdan geri bildirim İsteyen cmdlet'ler oluşturmanıza olanak sağlar. Bu özelliği kullanmak için cmdlet, Cmdlet özniteliğini bildirerek özelliği desteklediğini bildirerek cmdlet'in bir giriş işleme yönteminin içinde ShouldProcess System.Management.Automation.Cmdlet.ShouldProcess ve System.Management.Automation.Cmdlet.ShouldContinue yöntemlerini çağırarak çağırmalarını gerektirmektedir. İşlevselliği destekleme hakkında daha fazla ShouldProcess bilgi için bkz. Onay İsteği.

İşlem

Tek bir görev olarak kabul edilen mantıksal komut grubu. Gruptaki herhangi bir komut başarısız olursa görev otomatik olarak başarısız olur ve kullanıcının işlem içinde gerçekleştirilen eylemleri kabul etme veya reddetme seçeneği vardır. Bir işleme katılmak için cmdlet' in, Cmdlet özniteliği bildir olduğunda işlemleri desteklediğini bildirmektedir. 2.0'da işlem desteği Windows PowerShell tanıtıldı. İşlemler hakkında daha fazla bilgi için bkz. İşlemleri Destekleme.

Cmdlet'ler Komutlardan Nasıl Farklıdır?

Cmdlet'ler, diğer komut kabuğu ortamlarındaki komutlardan aşağıdaki yollarla farklıdır:

  • Cmdlet'ler .NET sınıflarının örnekleridir; bunlar tek başına yürütülebilir dosyalar değildir.
  • Cmdlet'ler birkaç düzine kod satırıyla oluşturulabilir.
  • Cmdlet'ler genellikle kendi ayrıştırma, hata sunumu veya çıkış biçimlendirmesini yapmaz. Ayrıştırma, hata sunusu ve çıkış biçimlendirmesi PowerShell çalışma zamanı tarafından işleme alır.
  • Cmdlet'ler metin akışları yerine işlem hattından giriş nesnelerini işler ve cmdlet'ler genellikle işlem hattına çıkış olarak nesneleri teslim eder.
  • Cmdlet'ler tek bir nesneyi aynı anda işleyene kayıt odaklıdır.

Cmdlet Temel Sınıfları

Windows PowerShell, aşağıdaki iki temel sınıftan türetilen cmdlet'leri destekler.

  • Çoğu cmdlet, System.Management.Automation.Cmdlet temel sınıfından türeyen .NET sınıflarını temel almaktadır. Bu sınıftan türetme, bir cmdlet'in çalışma zamanında en düşük bağımlılık Windows PowerShell sağlar. Bunun iki faydası vardır. İlk avantaj, cmdlet nesnelerinin daha küçük olması ve PowerShell çalışma zamanında yapılan değişikliklerden etkilenme olasılığın düşük olmasıdır. İkinci avantajı, gerekirse, cmdlet nesnesinin bir örneğini doğrudan oluşturabilir ve ardından PowerShell çalışma zamanı aracılığıyla çağırmak yerine doğrudan çağırabilirsiniz.

  • Daha karmaşık cmdlet'ler System.Management.Automation.PSCmdlet temel sınıfından türeyen .NET sınıflarını temel almaktadır. Bu sınıftan türetme, PowerShell çalışma zamanı için çok daha fazla erişim sağlar. Bu erişim cmdlet'inizin betikleri çağırarak sağlayıcılara erişmelerini ve geçerli oturum durumuna erişmelerini sağlar. (Geçerli oturum durumuna erişmek için oturum değişkenlerini ve tercihlerini alı ve ayarlayabilirsiniz.) Ancak, bu sınıftan türetilen cmdlet nesnesinin boyutunu artırır ve cmdlet'inizin PowerShell çalışma zamanının geçerli sürümüyle daha sıkı bir şekilde bağlı olduğu anlamına gelir.

Genel olarak, PowerShell çalışma zamanının genişletilmiş erişimine ihtiyacınız yoksa, System.Management.Automation.Cmdlet sınıfından türetebilirsiniz. Ancak, PowerShell çalışma zamanı cmdlet'lerinin yürütülmesi için kapsamlı günlük özelliklerine sahip. Denetim modeliniz bu günlüğe kaydetmeye bağlı ise, System.Management.Automation.PSCmdlet sınıfından türeterek cmdlet'inizin başka bir cmdlet'inden yürütülmesini önleyebileceksiniz.

Cmdlet Öznitelikleri

PowerShell, cmdlet'leri yönetmek ve PowerShell tarafından sağlanan ve cmdlet'i tarafından gerektirilen ortak işlevselliği belirtmek için kullanılan birkaç .NET özniteliğini tanımlar. Örneğin, öznitelikler bir sınıfı cmdlet olarak belirlemek, cmdlet'in parametrelerini belirtmek ve cmdlet geliştiricilerinin cmdlet kodunda bu işlevselliği uygulamasına gerek olmadığını belirtmek için giriş doğrulamasını talep etmek için kullanılır. Öznitelikler hakkında daha fazla bilgi için bkz. PowerShell Öznitelikleri.

Cmdlet Adları

PowerShell cmdlet'leri olarak ad için fiil ve isim ad çifti kullanır. Örneğin, PowerShell'e dahil edilen cmdlet, komut kabuğuna kayıtlı Get-Command tüm cmdlet'leri almak için kullanılır. Fiil, cmdlet'in gerçekleştirdiği eylemi tanımlar ve ad, cmdlet'in eylemini gerçekleştirdiğini kaynağı tanımlar.

.NET sınıfı cmdlet olarak bildiriliyor olduğunda bu adlar belirtilir. Bir .NET sınıfını cmdlet olarak nasıl bildirebilirsiniz? hakkında daha fazla bilgi için bkz. Cmdlet Öznitelik Bildirimi.

Cmdlet Kodu Yazma

Bu belge, cmdlet kodunun nasıl yazıldığına ilişkin iki yol sağlar. Kodu çok fazla açıklama olmadan görmek isterseniz bkz. Cmdlet Kodu Örnekleri. Kod hakkında daha fazla açıklama tercih ediyorsanız bkz. GetProc öğreticisi, stopproc öğreticisiveya SELECTSTR öğretici konuları.

Cmdlet yazma yönergeleri hakkında daha fazla bilgi için bkz. cmdlet geliştirme yönergeleri.

Ayrıca Bkz.

PowerShell Cmdlet Kavramları

PowerShell Cmdlet’i Yazma

PowerShell SDK