Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Cmdlet'in giriş kaynaklarından biri komut satırıdır. Bu konuda, cmdlet'in cmdlet'ine geçirilen açık nesnelere göre yerel bilgisayardan gelen girişleri işleyebilmesi için Get-Proc cmdlet'ine (İlk Cmdlet'inizi Oluşturma )açıklanmaktadır. Burada açıklanan Get-Proc cmdlet'i, adları temelinde işlemleri alır ve ardından komut isteminde işlemler hakkındaki bilgileri görüntüler.
Cmdlet Sınıfını Tanımlama
cmdlet oluşturmanın ilk adımı cmdlet adlandırma ve cmdlet'ini uygulayan .NET Framework sınıfının bildirimidir. Bu cmdlet işlem bilgilerini alır, dolayısıyla burada seçilen fiil adı "Get" olur. (Bilgi alma yeteneğine sahip hemen her tür cmdlet komut satırı girişini işleyebilir.) Onaylanan cmdlet fiilleri hakkında daha fazla bilgi için bkz. Cmdlet Fiil Adları.
Get-Proc cmdlet'i için sınıf bildirimi aşağıdadır. Bu tanım hakkındaki ayrıntılar İlk Cmdlet'inizi Oluşturma'nde sağlanır.
[Cmdlet(VerbsCommon.Get, "proc")]
public class GetProcCommand: Cmdlet
<Cmdlet(VerbsCommon.Get, "Proc")> _
Public Class GetProcCommand
Inherits Cmdlet
Parametreleri Bildirme
Cmdlet parametresi, kullanıcının cmdlet'e giriş sağlamasına olanak tanır. Aşağıdaki örnekte, Get-Proc ve Get-Member işlem hattı cmdlet'lerinin adlarıdır ve MemberTypeGet-Member cmdlet'i için bir parametredir. parametresi "property" bağımsız değişkenine sahiptir.
ps> Get-Proc ; Get-Member -MemberType Özelliği
Bir cmdlet'in parametrelerini bildirmek için önce parametreleri temsil eden özellikleri tanımlamanız gerekir.
Get-Proc cmdlet'inde tek parametre Nameparametresidir ve bu örnekte alınacak .NET Framework işlem nesnesinin adını temsil eder. Bu nedenle, cmdlet sınıfı bir ad dizisini kabul etmek için dize türünde bir özellik tanımlar.
Get-Proc cmdlet'in Name parametresinin parametre bildirimi aşağıdadır.
/// <summary>
/// Specify the cmdlet Name parameter.
/// </summary>
[Parameter(Position = 0)]
[ValidateNotNullOrEmpty]
public string[] Name
{
get { return processNames; }
set { processNames = value; }
}
private string[] processNames;
#endregion Parameters
<Parameter(Position:=0), ValidateNotNullOrEmpty()> _
Public Property Name() As String()
Get
Return processNames
End Get
Set(ByVal value As String())
processNames = value
End Set
End Property
Windows PowerShell çalışma zamanına bu özelliğin Name parametresi olduğunu bildirmek için, özellik tanımına bir System.Management.Automation.ParameterAttribute özniteliği eklenir. Bu özniteliği bildirmeye yönelik temel söz dizimi [Parameter()].
Uyarı
Bir parametre açıkça genel olarak işaretlenmelidir. Genel varsayılan olarak dahili olarak işaretlenmemiş ve Windows PowerShell çalışma zamanı tarafından bulunmayan parametreler.
Bu cmdlet, Name parametresi için bir dizi dize kullanır. Mümkünse, cmdlet'inizin de bir parametreyi dizi olarak tanımlaması gerekir, çünkü bu cmdlet'in birden fazla öğeyi kabul etmesine izin verir.
Parametre Tanımları Hakkında Anımsanacak Şeyler
Cmdlet'inizin Windows PowerShell cmdlet'leriyle uyumlu olduğundan emin olmak için önceden tanımlanmış Windows PowerShell parametre adları ve veri türleri mümkün olduğunca yeniden kullanılmalıdır. Örneğin, tüm cmdlet'ler bir kaynağı tanımlamak için önceden tanımlanmış
Idparametre adını kullanırsa, kullanıcı hangi cmdlet'i kullandığından bağımsız olarak parametrenin anlamını kolayca anlayabilir. Temel olarak, parametre adları ortak dil çalışma zamanında (CLR) değişken adları için kullanılanlarla aynı kuralları izler. Parametre adlandırma hakkında daha fazla bilgi için bkz. Cmdlet Parametre Adları.Windows PowerShell, tutarlı bir kullanıcı deneyimi sağlamak için birkaç parametre adını ayırır. Şu parametre adlarını kullanmayın:
WhatIf,Confirm,Verbose,Debug,Warn,ErrorAction,ErrorVariable,OutVariableveOutBuffer. Ayrıca, bu parametre adları için aşağıdaki diğer adlar ayrılmıştır:vb,db,ea,ev,ovveob.Name, cmdlet'lerinizde kullanılması önerilen basit ve ortak bir parametre adıdır. Bunun gibi bir parametre adı seçmek, belirli bir cmdlet'e özgü ve anımsanacak kadar zor olan karmaşık bir addan daha iyidir.Parametreler Windows PowerShell'de büyük/küçük harfe duyarlı değildir, ancak kabuk varsayılan olarak büyük/küçük harf korumasını sağlar. Bağımsız değişkenlerin büyük/küçük harf duyarlılığı, cmdlet'in çalışmasına bağlıdır. Bağımsız değişkenler, komut satırında belirtildiği gibi bir parametreye geçirilir.
Diğer parametre bildirimlerinin örnekleri için bkz. Cmdlet Parametreleri.
Parametreleri Konumsal veya Adlandırılmış Olarak Bildirme
Cmdlet her parametreyi konumsal veya adlandırılmış parametre olarak ayarlamalıdır. Her iki parametre türü de tek bağımsız değişkenleri, virgülle ayrılmış birden çok bağımsız değişkeni ve Boole ayarlarını kabul eder.
anahtarı olarak da adlandırılan Boole parametresi yalnızca Boole ayarlarını işler. anahtar parametresinin varlığını belirlemek için kullanılır. Önerilen varsayılan değer false.
Örnek Get-Proc cmdlet'i, Name parametresini 0 konumuna sahip bir konum parametresi olarak tanımlar. Bu, kullanıcının komut satırına girdiği ilk bağımsız değişkenin bu parametre için otomatik olarak eklendiği anlamına gelir. Kullanıcının komut satırından parametre adını belirtmesi gereken adlandırılmış bir parametre tanımlamak istiyorsanız, Position anahtar sözcüğünü öznitelik bildiriminin dışında bırakın.
Uyarı
Parametrelerin adlandırılması gerekmediği sürece, kullanıcıların parametre adını yazmak zorunda kalmaması için en çok kullanılan parametreleri konumlu hale getirmenizi öneririz.
Parametreleri Zorunlu veya İsteğe Bağlı Olarak Bildirme
Cmdlet'in her parametreyi isteğe bağlı veya zorunlu bir parametre olarak ayarlaması gerekir. Örnek Get-Proc cmdlet'inde, Mandatory anahtar sözcüğü öznitelik bildiriminde ayarlanmadığından Name parametresi isteğe bağlı olarak tanımlanır.
Parametre Doğrulamayı Destekleme
Örnek Get-Proc cmdlet'i, girişin null veya boş olmadığını doğrulamayı etkinleştirmek için Name parametresine System.Management.Automation.ValidateNotNullOrEmptyAttribute bir giriş doğrulama özniteliği ekler. Bu öznitelik, Windows PowerShell tarafından sağlanan çeşitli doğrulama özniteliklerinden biridir. Diğer doğrulama özniteliklerine örnekler için bkz. Parametre Girişi doğrulama.
[Parameter(Position = 0)]
[ValidateNotNullOrEmpty]
public string[] Name
Giriş İşleme Yöntemini Geçersiz Kılma
Cmdlet'iniz komut satırı girişini işleyecekse, uygun giriş işleme yöntemlerini geçersiz kılmalıdır. Temel giriş işleme yöntemleri, İlk Cmdlet'inizi Oluşturma'nde tanıtılır.
Get-Proc cmdlet'i, kullanıcı veya betik tarafından sağlanan Name parametre girişini işlemek için System.Management.Automation.Cmdlet.ProcessRecord yöntemini geçersiz kılar. Bu yöntem, istenen her işlem adı için veya ad sağlanmayan işlemler için tüm işlemleri alır.
System.Management.Automation.Cmdlet.ProcessRecordiçinde, System.Management.Automation.Cmdlet.WriteObject çağrısının, çıkış nesnelerini işlem hattına göndermek için çıkış mekanizması olduğuna dikkat edin. Bu çağrının ikinci parametresi olan enumerateCollection, Windows PowerShell çalışma zamanını işlem nesnelerinin çıkış dizisini listelemesi ve komut satırına tek seferde bir işlem yazması konusunda bilgilendirmek üzere true olarak ayarlanır.
protected override void ProcessRecord()
{
// If no process names are passed to the cmdlet, get all processes.
if (processNames == null)
{
// Write the processes to the pipeline making them available
// to the next cmdlet. The second argument of this call tells
// PowerShell to enumerate the array, and send one process at a
// time to the pipeline.
WriteObject(Process.GetProcesses(), true);
}
else
{
// If process names are passed to the cmdlet, get and write
// the associated processes.
foreach (string name in processNames)
{
WriteObject(Process.GetProcessesByName(name), true);
}
}
}
Protected Overrides Sub ProcessRecord()
'/ If no process names are passed to the cmdlet, get all processes.
If processNames Is Nothing Then
Dim processes As Process()
processes = Process.GetProcesses()
End If
'/ If process names are specified, write the processes to the
'/ pipeline to display them or make them available to the next cmdlet.
For Each name As String In processNames
'/ The second parameter of this call tells PowerShell to enumerate the
'/ array, and send one process at a time to the pipeline.
WriteObject(Process.GetProcessesByName(name), True)
Next
End Sub 'ProcessRecord
Kod Örneği
C# örnek kodunun tamamı için bkz. getProcessSample02 Örnek .
Nesne Türlerini ve Biçimlendirmeyi Tanımlama
Windows PowerShell, .NET Framework nesnelerini kullanarak cmdlet'ler arasında bilgi geçirir. Sonuç olarak, bir cmdlet'in kendi türünü tanımlaması veya bir cmdlet'in başka bir cmdlet tarafından sağlanan mevcut bir türü genişletmesi gerekebilir. Yeni türleri tanımlama veya var olan türleri genişletme hakkında daha fazla bilgi için bkz. Nesne Türlerini Genişletme ve Biçimlendirme.
Cmdlet'i oluşturma
Cmdlet'i uyguladıktan sonra, bir Windows PowerShell ek bileşeni kullanarak Windows PowerShell'e kaydetmeniz gerekir. Cmdlet'leri kaydetme hakkında daha fazla bilgi için bkz. Cmdlet'leri, Sağlayıcıları ve Konak Uygulamalarını Kaydetme.
Cmdlet'i test etme
Cmdlet'iniz Windows PowerShell'e kaydedildiğinde, komut satırında çalıştırarak bunu test edebilirsiniz. Örnek cmdlet'in kodunu test etmenin iki yolu aşağıda verilmiştır. Komut satırından cmdlet'leri kullanma hakkında daha fazla bilgi için bkz. windows powershell kullanmaya başlama.
Windows PowerShell isteminde, "IEXPLORE" adlı Internet Explorer işlemini listelemek için aşağıdaki komutu kullanın.
Get-Proc -Name iexploreAşağıdaki çıkış görüntülenir.
Handles NPM(K) PM(K) WS(K) VS(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 354 11 10036 18992 85 0.67 3284 iexplore"IEXPLORE", "OUTLOOK" ve "NOT DEFTERI" adlı Internet Explorer, Outlook ve Not Defteri işlemlerini listelemek için aşağıdaki komutu kullanın. Birden çok işlem varsa, bunların tümü görüntülenir.
Get-Proc -Name iexplore, outlook, notepadAşağıdaki çıkış görüntülenir.
Handles NPM(K) PM(K) WS(K) VS(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 732 21 24696 5000 138 2.25 2288 iexplore 715 19 20556 14116 136 1.78 3860 iexplore 3917 62 74096 58112 468 191.56 1848 OUTLOOK 39 2 1024 3280 30 0.09 1444 notepad 39 2 1024 356 30 0.08 3396 notepad
Ayrıca Bkz.
İşlem Hattı Girişini İşleyen Parametreler Ekleme
Nesne Türlerini ve Biçimlendirme Genişletmeyi
PowerShell