Cmdlet Parametrelerine Takma Adlar, Joker Karakter Genişletme ve Yardım Ekleme
Bu bölümde Stop-Proc cmdlet'inin (Sistemi Değiştiren Bir Cmdlet Oluşturma bölümünde açıklanmıştır) parametrelerine takma adların, joker karakter genişletmesinin ve Yardım mesajlarının nasıl ekleneceği açıklanmaktadır.
Bu Stop-Proc cmdlet'i, Get-Proc cmdlet'i (İlk Cmdlet'inizi Oluşturma bölümünde açıklanmıştır) kullanılarak alınan işlemleri durdurmaya çalışır.
Cmdlet'i tanımlama
Cmdlet oluşturmanın ilk adımı her zaman cmdlet'i adlandırmak ve cmdlet'i uygulayan .NET sınıfını bildirmektir. Sistemi değiştirmek için bir cmdlet yazdığınız için buna göre adlandırılması gerekir. Bu cmdlet sistem işlemlerini durdurduğundan, System.Management.Automation.Verbslifecycle sınıfı tarafından tanımlanan Stop fiilini ve süreci belirtmek için Proc adıyla birlikte kullanır. Onaylanan cmdlet fiilleri hakkında daha fazla bilgi için bkz. Cmdlet Fiil Adları.
Aşağıdaki kod, bu Stop-Proc cmdlet'inin sınıf tanımıdır.
[Cmdlet(VerbsLifecycle.Stop, "proc",
SupportsShouldProcess = true)]
public class StopProcCommand : Cmdlet
Sistem Değişikliği İçin Parametrelerin Tanımlanması
Cmdlet'inizin sistem değişikliklerini ve kullanıcı geri bildirimini destekleyen parametreleri tanımlaması gerekir. Cmdlet'in sistemi bir tür tanımlayıcıyla değiştirebilmesi için cmdlet'in bir Ad parametresi veya eşdeğerini tanımlaması gerekir. Ayrıca cmdlet'in Force ve PassThru parametrelerini tanımlaması gerekir. Bu parametreler hakkında daha fazla bilgi için bkz. Sistemi Değiştiren Bir Cmdlet Oluşturma.
Parametre Takma Adı Tanımlama
Parametre takma adı, bir cmdlet parametresi için alternatif bir ad veya iyi tanımlanmış 1 harfli veya 2 harfli kısa ad olabilir. Her iki durumda da takma ad kullanmanın amacı, komut satırından kullanıcı girişini kolaylaştırmaktır. Windows PowerShell, [Alias()] bildirim sözdizimini kullanan System.Management.Automation.Aliasattribute özniteliği aracılığıyla parametre diğer adlarını destekler.
Aşağıdaki kod, Ad parametresine bir takma adın nasıl eklendiğini gösterir.
/// <summary>
/// Specify the mandatory Name parameter used to identify the
/// processes to be stopped.
/// </summary>
[Parameter(
Position = 0,
Mandatory = true,
ValueFromPipeline = true,
ValueFromPipelineByPropertyName = true,
HelpMessage = "The name of one or more processes to stop. Wildcards are permitted."
)]
[Alias("ProcessName")]
public string[] Name
{
get { return processNames; }
set { processNames = value; }
}
private string[] processNames;
Windows PowerShell çalışma zamanı, System.Management.Automation.Aliasattribute özniteliğini kullanmanın yanı sıra, herhangi bir takma ad belirtilmemiş olsa bile kısmi ad eşleştirmesi gerçekleştirir. Örneğin, cmdlet'inizde bir DosyaAdı parametresi varsa ve F ile başlayan tek parametre buysa, kullanıcı Dosya Adı, Dosya adı, Dosya, Fi veya F ve girişi yine de DosyaAdı parametresi olarak tanıyın .
Parametreler İçin Yardım Oluşturma
Windows PowerShell, cmdlet parametreleri için Yardım oluşturmanıza olanak tanır. Bunu sistem değişikliği ve kullanıcı geri bildirimi için kullanılan herhangi bir parametre için yapın. Yardım'ı destekleyecek her parametre için, System.Management.Automation.Parameterattribute öznitelik bildiriminde HelpMessage öznitelik anahtar kelimesini ayarlayabilirsiniz. Bu anahtar kelime, parametrenin kullanımında yardım amacıyla kullanıcıya gösterilecek metni tanımlar. Ayrıca, ileti için kullanılacak kaynağın temel adını tanımlamak amacıyla HelpMessageBaseName anahtar kelimesini de ayarlayabilirsiniz. Bu anahtar kelimeyi ayarlarsanız kaynak tanımlayıcısını belirtmek için HelpMessageResourceId anahtar kelimesini de ayarlamanız gerekir.
Bu Stop-Proc cmdlet'indeki aşağıdaki kod, Ad parametresi için HelpMessage özelliği anahtar kelimesini tanımlar.
/// <summary>
/// Specify the mandatory Name parameter used to identify the
/// processes to be stopped.
/// </summary>
[Parameter(
Position = 0,
Mandatory = true,
ValueFromPipeline = true,
ValueFromPipelineByPropertyName = true,
HelpMessage = "The name of one or more processes to stop. Wildcards are permitted."
)]
Giriş İşleme Yöntemini Geçersiz Kılma
Cmdlet'iniz bir giriş işleme yöntemini geçersiz kılmalıdır; çoğunlukla bu System.Management.Automation.Cmdlet.ProcessRecord olacaktır. Sistemi değiştirirken cmdlet'in, kullanıcının bir değişiklik yapılmadan önce geri bildirim sağlamasına izin vermek için System.Management.Automation.Cmdlet.ShouldProcess ve System.Management.Automation.Cmdlet.ShouldContinue yöntemlerini çağırması gerekir. Bu yöntemler hakkında daha fazla bilgi için bkz. Sistemi Değiştiren Bir Cmdlet Oluşturma.
Joker Karakter Genişletmeyi Destekleme
Birden çok nesnenin seçimine izin vermek için cmdlet'iniz, parametre girişi için joker karakter genişletme desteği sağlamak üzere System.Management.Automation.WildcardPattern ve System.Management.Automation.WildcardOptions sınıflarını kullanabilir. Joker karakter kalıplarına örnek olarak lsa*, *.txt ve [a-c]* verilebilir. Desen tam anlamıyla kullanılması gereken bir karakter içerdiğinde, çıkış karakteri olarak geri tırnak karakterini (`) kullanın.
Dosya ve yol adlarının joker karakter genişletmeleri, birden çok nesnenin seçilmesi gerektiğinde cmdlet'in yol girişleri için desteğe izin vermek isteyebileceği yaygın senaryoların örnekleridir. Yaygın bir durum, kullanıcının geçerli klasörde bulunan tüm dosyaları görmek istediği dosya sistemindedir.
Özelleştirilmiş bir joker karakter deseni eşleştirme uygulamasına nadiren ihtiyaç duyacaksınız. Bu durumda cmdlet'iniz joker karakter genişletme için tam POSIX 1003.2, 3.13 spesifikasyonunu veya aşağıdaki basitleştirilmiş alt kümeyi desteklemelidir:
- Soru işareti (
?). Belirtilen konumdaki herhangi bir karakterle eşleşir. - Yıldız işareti (
*). Belirtilen konumda başlayan sıfır veya daha fazla karakterle eşleşir. - Açık parantez (
[). Karakterleri veya bir karakter aralığını içerebilen bir kalıp parantezi ifadesi sunar. Bir aralık gerekiyorsa aralığı belirtmek için kısa çizgi (-) kullanılır. - Parantezi kapat (
]). Bir model parantez ifadesini sonlandırır. - Geri alıntı kaçış karakteri (
`). Bir sonraki karakterin harfi harfine alınması gerektiğini belirtir. Geri alıntı karakterini komut satırından belirtirken (programlı olarak belirtmek yerine), geri alıntı kaçış karakterinin iki kez belirtilmesi gerektiğini unutmayın.
Not
Joker karakter desenleri hakkında daha fazla bilgi için bkz. Cmdlet Parametrelerinde Desteklenen Joker Karakterler.
Aşağıdaki kod, joker karakter seçeneklerinin nasıl ayarlanacağını ve bu cmdlet'in Ad parametresini çözümlemek için kullanılan joker karakter modelinin nasıl tanımlanacağını gösterir.
WildcardOptions options = WildcardOptions.IgnoreCase |
WildcardOptions.Compiled;
WildcardPattern wildcard = new WildcardPattern(name,options);
Aşağıdaki kod, işlem adının tanımlanan joker karakter düzeniyle eşleşip eşleşmediğinin nasıl test edileceğini gösterir. Bu durumda, işlem adı kalıpla eşleşmiyorsa cmdlet'in bir sonraki işlem adını almaya devam ettiğini unutmayın.
if (!wildcard.IsMatch(processName))
{
continue;
}
Kod Örneği
C# örnek kodunun tamamı için bkz. StopProcessSample03 Örneği.
Nesne Türlerini ve Biçimlendirmeyi Tanımlayın
Windows PowerShell, .Net nesnelerini kullanarak cmdlet'ler arasında bilgi aktarır. Sonuç olarak, bir cmdlet'in kendi türünü tanımlaması gerekebilir veya cmdlet'in başka bir cmdlet tarafından sağlanan mevcut bir türü genişletmesi gerekebilir. Yeni türleri tanımlama veya mevcut türleri genişletme hakkında daha fazla bilgi için bkz. Nesne Türlerini Genişletme ve Biçimlendirme.
Cmdlet'i oluşturma
Bir cmdlet'i uyguladıktan sonra Windows PowerShell ek bileşeni aracılığıyla Windows PowerShell'e kaydedilmesi gerekir. Cmdlet'leri kaydetme hakkında daha fazla bilgi için bkz. Cmdlet'leri, Sağlayıcıları ve Ana Bilgisayar Uygulamalarını Kaydetme.
Cmdlet'i test etme
Cmdlet'iniz Windows PowerShell'e kaydedildiğinde komut satırında çalıştırarak test edebilirsiniz. Örnek Stop-Proc cmdlet'ini test edelim. Komut satırından cmdlet'leri kullanma hakkında daha fazla bilgi için Windows PowerShell'e Başlarken konusuna bakın.
Windows PowerShell'i başlatın ve Ad parametresi için ProcessName takma adını kullanarak bir işlemi durdurmak için
Stop-Proc'u kullanın.PS> Stop-Proc -ProcessName notepadAşağıdaki çıktı görünür.
Confirm Are you sure you want to perform this action? Performing operation "Stop-Proc" on Target "notepad (3496)". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): YKomut satırına aşağıdaki girişi yapın. Ad parametresi zorunlu olduğundan sizden istenir.
!?girilmesi, parametreyle ilişkili yardım metnini getirir.PS> Stop-ProcAşağıdaki çıktı görünür.
Cmdlet Stop-Proc at command pipeline position 1 Supply values for the following parameters: (Type !? for Help.) Name[0]: !? The name of one or more processes to stop. Wildcards are permitted. Name[0]: notepadŞimdi
*note*joker karakter düzeniyle eşleşen tüm işlemleri durdurmak için aşağıdaki girişi yapın. Desenle eşleşen her işlemi durdurmadan önce size sorulur.PS> Stop-Proc -Name *note*Aşağıdaki çıktı görünür.
Confirm Are you sure you want to perform this action? Performing operation "Stop-Proc" on Target "notepad (1112)". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): YAşağıdaki çıktı görünür.
Confirm Are you sure you want to perform this action? Performing operation "Stop-Proc" on Target "ONENOTEM (3712)". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): NAşağıdaki çıktı görünür.
Confirm Are you sure you want to perform this action? Performing operation "Stop-Proc" on Target "ONENOTE (3592)". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): N
Ayrıca Bakınız
- Sistemi Değiştiren bir Cmdlet Oluşturun
- Windows PowerShell Cmdlet'i Nasıl Oluşturulur
- Nesne Türlerini ve Biçimlendirmeyi Genişletme
- Cmdlet'leri, Sağlayıcıları ve Ana Bilgisayar Uygulamalarını Kaydetme
- Cmdlet Parametrelerinde Joker Karakterlerin Desteklenmesi
- Windows PowerShell SDK'sı