Cmdlet'e Genel Bakış
Cmdlet, PowerShell ortamında kullanılan hafif bir komuttur. PowerShell çalışma zamanı, bu cmdlet'leri komut satırında sağlanan otomasyon betikleri bağlamında çağırır. PowerShell çalışma zamanı ayrıca bunları PowerShell API'leri aracılığıyla programlı olarak çağırır.
Cmdlet'ler
Cmdlet'ler bir eylem gerçekleştirir ve genellikle bir Microsoft .NET nesnesini ardışık düzendeki bir sonraki komuta döndürür. Cmdlet, PowerShell'in ardışık düzen anlambilimine katılan tek bir komuttur. Buna ikili (C#) cmdlet'ler, gelişmiş komut dosyası işlevleri, CDXML ve İş Akışları dahildir.
Bu SDK belgelerinde, C# ile yazılmış ikili cmdlet'lerin nasıl oluşturulacağı açıklanmaktadır. Komut dosyası tabanlı cmdlet'ler hakkında bilgi için bkz.:
- about_Functions_Advanced
- about_Functions_CmdletBindingAttribute
- about_Functions_Advanced_Methods
İkili cmdlet oluşturmak için iki özel cmdlet temel sınıfından birinden türetilen bir cmdlet sınıfını uygulamanız gerekir. Türetilmiş sınıf şunları yapmalıdır:
- Türetilmiş sınıfı bir cmdlet olarak tanımlayan bir öznitelik bildirin.
- Genel özellikleri cmdlet parametreleri olarak tanımlayan özniteliklerle süslenmiş ortak özellikleri tanımlayın.
- Kayıtları işlemek için bir veya daha fazla girdi işleme yöntemini geçersiz kılın.
Sınıfı içeren derlemeyi doğrudan Import-Module cmdlet'ini kullanarak yükleyebilir veya System.Management.Automation.Runspaces.Initialssessionstate API'sini kullanarak derlemeyi yükleyen bir ana bilgisayar uygulaması oluşturabilirsiniz. Her iki yöntem de cmdlet'in işlevselliğine programlı ve komut satırı erişimi sağlar.
Cmdlet Koşulları
Aşağıdaki terimler PowerShell cmdlet belgelerinde sıklıkla kullanılmaktadır:
Cmdlet özelliği
Bir cmdlet sınıfını cmdlet olarak bildirmek için kullanılan bir .NET özniteliği. PowerShell isteğe bağlı diğer bazı öznitelikleri kullansa da Cmdlet özniteliği gereklidir. Bu öznitelik hakkında daha fazla bilgi için bkz. Cmdlet Öznitelik Bildirimi.
Cmdlet parametresi
Kullanıcının veya cmdlet'i çalıştıran uygulamanın kullanabileceği parametreleri tanımlayan ortak özellikler. Cmdlet'ler gerekli, adlandırılmış, konumsal ve anahtarlama parametrelerine sahip olabilir. Anahtar parametreleri, yalnızca parametreler çağrıda belirtildiğinde değerlendirilen parametreleri tanımlamanıza olanak tanır. Farklı parametre türleri hakkında daha fazla bilgi için bkz. Cmdlet Parametreleri.
Parametre seti
Belirli bir eylemi gerçekleştirmek için aynı komutta kullanılabilecek bir grup parametre. Bir cmdlet'in birden fazla parametre kümesi olabilir, ancak her parametre kümesinin benzersiz olan en az bir parametreye sahip olması gerekir. İyi cmdlet tasarımı, benzersiz parametrenin aynı zamanda gerekli bir parametre olmasını kuvvetle ö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 ayarlandığında 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şlemek için kullanılan aşağıdaki sanal yöntemleri sağlar. Türetilmiş cmdlet sınıflarının tümü, ilk üç yöntemden bir veya daha fazlasını geçersiz kılmalıdır:
- System.Management.Automation.Cmdlet.BeginProcessing: cmdlet için isteğe bağlı tek seferlik ön işleme işlevselliği sağlamak için kullanılır.
- System.Management.Automation.Cmdlet.ProcessRecord: Cmdlet için kayıt bazında işleme işlevselliği sağlamak için kullanılır. System.Management.Automation.Cmdlet.ProcessRecord yöntemi, cmdlet'in girişine bağlı olarak herhangi bir sayıda çağrılabilir veya hiç çağrılamayabilir.
- System.Management.Automation.Cmdlet.EndProcessing: cmdlet için isteğe bağlı tek seferlik, işlem sonrası işlevsellik sağlamak için kullanılır.
- System.Management.Automation.Cmdlet.StopProcessing: Kullanıcı cmdlet'i eşzamansız olarak durdurduğunda (örneğin, CTRL+C tuşlarına basarak) işlemeyi durdurmak için kullanılır.
Bu yöntemler hakkında daha fazla bilgi için bkz. Cmdlet Giriş İşleme Yöntemleri.
Bir cmdlet uyguladığınızda bu giriş işleme yöntemlerinden en az birini geçersiz kılmanız gerekir. Genellikle ProcessRecord(), cmdlet'in işlediği her kayıt için çağrıldığından geçersiz kıldığınız yöntemdir. Buna karşılık, BeginProcessing() yöntemi ve EndProcessing() yöntemi, kayıtların ön işlemesini veya son işlemesini 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'in sistemde bir değişiklik yapmasından önce kullanıcıdan geri bildirim isteyen cmdlet'ler oluşturmanıza olanak tanır. Bu özelliği kullanmak için, Cmdlet özniteliğini bildirdiğinizde cmdlet'in ShouldProcess özelliğini desteklediğini bildirmesi gerekir ve cmdlet'in System.Management.Automation.Cmdlet.ShouldProcess ve System.Management.Automation öğelerini çağırması gerekir. .Cmdlet.ShouldContinue yöntemleri bir giriş işleme yönteminin içinden. ShouldProcess işlevinin nasıl destekleneceği hakkında daha fazla bilgi için bkz. Onay İsteme.
İşlem
Tek bir görev olarak değerlendirilen 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ı, işlem içinde gerçekleştirilen eylemleri kabul etme veya reddetme seçeneğine sahiptir. Bir işleme katılmak için cmdlet'in, Cmdlet özniteliği bildirildiğinde işlemleri desteklediğini beyan etmesi gerekir. İşlemler için destek Windows PowerShell 2.0'da tanıtıldı. İşlemler hakkında daha fazla bilgi için bkz. İşlemler Nasıl Desteklenir?
Cmdlet'lerin Komutlardan Farkı
Cmdlet'ler diğer komut kabuğu ortamlarındaki komutlardan şu açılardan farklılık gösterir:
- Cmdlet'ler .NET sınıflarının örnekleridir; bunlar tek başına yürütülebilir dosyalar değildir.
- Cmdlet'ler bir düzine kadar az kod satırından oluşturulabilir.
- Cmdlet'ler genellikle kendi ayrıştırmalarını, hata sunumlarını veya çıktı biçimlendirmelerini yapmazlar. Ayrıştırma, hata sunumu ve çıktı biçimlendirmesi PowerShell çalışma zamanı tarafından gerçekleştirilir.
- Cmdlet'ler giriş nesnelerini metin akışları yerine işlem hattından işler ve cmdlet'ler genellikle nesneleri çıkış olarak işlem hattına iletir.
- Cmdlet'ler kayıt odaklıdır çünkü aynı anda tek bir nesneyi işlerler.
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üretilen .NET sınıflarını temel alır. Bu sınıftan türetmek, bir cmdlet'in Windows PowerShell çalışma zamanındaki minimum bağımlılık kümesini kullanmasına olanak tanır. Bunun iki faydası var. İlk avantaj, cmdlet nesnelerinin daha küçük olması ve PowerShell çalışma zamanındaki değişikliklerden etkilenme olasılığınızın daha düşük olmasıdır. İkinci avantaj ise, eğer gerekiyorsa doğrudan cmdlet nesnesinin bir örneğini oluşturabilir ve ardından onu 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üretilen .NET sınıflarını temel alır. Bu sınıftan türetmek size PowerShell çalışma zamanına çok daha fazla erişim sağlar. Bu erişim, cmdlet'inizin komut dosyalarını çağırmasına, sağlayıcılara erişmesine ve geçerli oturum durumuna erişmesine olanak tanır. (Geçerli oturum durumuna erişmek için oturum değişkenlerini ve tercihlerini alır ve ayarlarsınız.) Ancak bu sınıftan türetmek cmdlet nesnesinin boyutunu artırır ve bu, cmdlet'inizin PowerShell çalışma zamanının geçerli sürümüne daha sıkı bir şekilde bağlandığı anlamına gelir. .
Genel olarak, PowerShell çalışma zamanına genişletilmiş erişime ihtiyacınız olmadığı sürece System.Management.Automation.Cmdlet sınıfından türetmeniz gerekir. Ancak PowerShell çalışma zamanı, cmdlet'lerin yürütülmesi için kapsamlı günlük kaydı yeteneklerine sahiptir. Denetim modeliniz bu günlüğe bağlıysa, System.Management.Automation.PSCmdlet sınıfından türeterek cmdlet'inizin başka bir cmdlet içinden yürütülmesini engelleyebilirsiniz.
Cmdlet Nitelikleri
PowerShell, cmdlet'leri yönetmek ve PowerShell tarafından sağlanan ve cmdlet tarafından gerekli olabilecek ortak işlevleri belirtmek için kullanılan çeşitli .NET özniteliklerini tanımlar. Örneğin, öznitelikler bir sınıfı cmdlet olarak atamak, cmdlet'in parametrelerini belirtmek ve cmdlet geliştiricilerinin bu işlevselliği cmdlet kodlarında uygulamasına gerek kalmaması için girişin doğrulanmasını istemek için kullanılır. Öznitelikler hakkında daha fazla bilgi için bkz. PowerShell Öznitelikleri.
Cmdlet Adları
PowerShell, cmdlet'leri adlandırmak için fiil ve isim çiftini kullanır. Örneğin, PowerShell'de bulunan Get-Command cmdlet'i, komut kabuğunda kayıtlı tüm cmdlet'leri almak için kullanılır. Fiil, cmdlet'in gerçekleştirdiği eylemi tanımlar ve isim, cmdlet'in eylemini gerçekleştirdiği kaynağı tanımlar.
Bu adlar, .NET sınıfı bir cmdlet olarak bildirildiğinde belirtilir. Bir .NET sınıfının cmdlet olarak nasıl bildirileceği hakkında daha fazla bilgi için bkz. Cmdlet Öznitelik Bildirimi.
Cmdlet Kodu Yazma
Bu belge, cmdlet kodunun nasıl yazıldığını keşfetmenin iki yolunu sunar. Kodu fazla açıklama yapmadan görmeyi tercih ederseniz Cmdlet Kodu Örnekleri'ne bakın. Kod hakkında daha fazla açıklamayı tercih ederseniz GetProc Eğitimi, StopProc Eğitimi veya SelectStr Eğitimi konularına bakın.
Cmdlet yazma yönergeleri hakkında daha fazla bilgi için bkz. Cmdlet Geliştirme Yönergeleri.
Ayrıca Bakınız
PowerShell Cmdlet Kavramları
PowerShell Cmdlet'i Yazma
PowerShell SDK'sı