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.
Bir cmdlet için giriş kaynağı, işlem hattındaki yukarı akış cmdlet'inden kaynaklanan bir nesnedir. Bu bölümde, cmdlet'in işlem hattı nesnelerini işleyebilmesi için Get-Proc cmdlet'ine (İlk Cmdlet'inizi Oluşturma) nasıl parametre ekleneceği açıklanır.
Bu Get-Proc cmdlet' i bir işlem hattı nesnesinden girişi kabul eden, sağlanan adlara göre yerel bilgisayardan işlem bilgilerini alan ve ardından komut satırında işlemler hakkındaki bilgileri görüntüleyen bir Name parametresi kullanır.
Cmdlet Sınıfını Tanımlama
Cmdlet oluşturmanın ilk adımı her zaman cmdlet'ini adlandırmak ve cmdlet'i uygulayan .NET sınıfını bildirmektir. 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ı.
Bu Get-Proc cmdlet'inin tanımı aşağıdadır. Bu tanımın ayrıntıları İlk Cmdlet'inizi Oluşturmaiçinde verilmiştir.
[Cmdlet(VerbsCommon.Get, "proc")]
public class GetProcCommand : Cmdlet
<Cmdlet(VerbsCommon.Get, "Proc")> _
Public Class GetProcCommand
Inherits Cmdlet
İşlem Hattından Giriş Tanımlama
Bu bölümde, bir cmdlet için işlem hattından girişin nasıl tanımlanacağı açıklanmaktadır. Bu Get-Proc cmdlet'i, komut satırı girişini İşleyen Parametreler Eklemeaçıklandığı gibi Name parametresini temsil eden bir özellik tanımlar.
(Parametreleri bildirme hakkında genel bilgi için bu konuya bakın.)
Ancak, bir cmdlet'in işlem hattı girişini işlemesi gerektiğinde, parametrelerinin Windows PowerShell çalışma zamanı tarafından giriş değerlerine bağlı olması gerekir. Bunu yapmak için ValueFromPipeline anahtar sözcüğünü eklemeniz veya ValueFromPipelineByProperty anahtar sözcüğünü System.Management.Automation.ParameterAttribute öznitelik bildirimine eklemeniz gerekir. Cmdlet tam giriş nesnesine erişiyorsa ValueFromPipeline anahtar sözcüğünü belirtin. cmdlet'i nesnenin yalnızca bir özelliğine erişiyorsa ValueFromPipelineByProperty belirtin.
İşlem hattı girişini kabul eden bu Get-Proc cmdlet'in Name parametresi için parametre bildirimi aşağıdadır.
[Parameter(
Position = 0,
ValueFromPipeline = true,
ValueFromPipelineByPropertyName = true)]
[ValidateNotNullOrEmpty]
public string[] Name
{
get { return this.processNames; }
set { this.processNames = value; }
}
<Parameter(Position:=0, ValueFromPipeline:=True, _
ValueFromPipelineByPropertyName:=True), ValidateNotNullOrEmpty()> _
Public Property Name() As String()
Get
Return processNames
End Get
Set(ByVal value As String())
processNames = value
End Set
End Property
Önceki bildirim, ValueFromPipeline anahtar sözcüğünü true olarak ayarlar; böylece, nesne parametreyle aynı türdeyse veya aynı türe zorlanabilirse Windows PowerShell çalışma zamanı parametreyi gelen nesneye bağlar.
ValueFromPipelineByPropertyName anahtar sözcüğü de true olarak ayarlanır, böylece Windows PowerShell çalışma zamanı Name özelliği için gelen nesneyi denetler. Gelen nesnenin böyle bir özelliği varsa, çalışma zamanı Name parametresini gelen nesnenin Name özelliğine bağlar.
Uyarı
Bir parametre için ValueFromPipeline öznitelik anahtar sözcüğü ayarı, ValueFromPipelineByPropertyName anahtar sözcüğü ayarından önceliklidir.
Giriş İşleme Yöntemini Geçersiz Kılma
Cmdlet'iniz işlem hattı girişini işleyecekse, uygun giriş işleme yöntemlerini geçersiz kılması gerekir. Temel giriş işleme yöntemleri, İlk Cmdlet'inizi Oluşturma'nde tanıtılır.
Bu 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ı veya ad sağlanmazsa tüm işlemler için işlemleri alır.
System.Management.Automation.Cmdlet.ProcessRecordiçinde, WriteObject(System.Object,System.Boolean) ç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ına işlem nesneleri dizisini listelemesini ve komut satırına tek seferde bir işlem yazmasını bildirmek için 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);
} // End foreach (string name...).
}
}
Protected Overrides Sub ProcessRecord()
Dim processes As Process()
'/ If no process names are passed to the cmdlet, get all processes.
If processNames Is Nothing Then
processes = Process.GetProcesses()
Else
'/ 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 If
End Sub 'ProcessRecord
Kod Örneği
C# örnek kodunun tamamı için bkz. getProcessSample03 Örnek .
Nesne Türlerini ve Biçimlendirmeyi Tanımlama
Windows PowerShell, .NET nesnelerini kullanarak cmdlet'ler arasında bilgi geçirir. Sonuç olarak, bir cmdlet'in kendi türünü tanımlaması veya 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
Bir cmdlet uygulandıktan sonra bir 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 Konak Uygulamalarını Kaydetme.
Cmdlet'i test etme
Cmdlet'iniz Windows PowerShell'e kaydedildiğinde, komut satırında çalıştırarak bunu test edin. Örneğin, örnek cmdlet'inin kodunu test edin. Komut satırından cmdlet'leri kullanma hakkında daha fazla bilgi için bkz. Windows PowerShell ile Çalışmaya Başlama .
Windows PowerShell isteminde işlem hattı aracılığıyla işlem adlarını almak için aşağıdaki komutları girin.
PS> type ProcessNames | Get-ProcAşağıdaki çıkış görüntülenir.
Handles NPM(K) PM(K) WS(K) VS(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 809 21 40856 4448 147 9.50 2288 iexplore 737 21 26036 16348 144 22.03 3860 iexplore 39 2 1024 388 30 0.08 3396 notepad 3927 62 71836 26984 467 195.19 1848 OUTLOOK"IEXPLORE" adlı işlemlerden
Nameözelliğine sahip işlem nesnelerini almak için aşağıdaki satırları girin. Bu örnek, "IEXPLORE" işlemlerini almak için yukarı akış komutu olarakGet-Processcmdlet'ini (Windows PowerShell tarafından sağlanır) kullanır.PS> Get-Process iexplore | Get-ProcAşağıdaki çıkış görüntülenir.
Handles NPM(K) PM(K) WS(K) VS(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 801 21 40720 6544 142 9.52 2288 iexplore 726 21 25872 16652 138 22.09 3860 iexplore 801 21 40720 6544 142 9.52 2288 iexplore 726 21 25872 16652 138 22.09 3860 iexplore
Ayrıca Bkz.
Komut Satırı Girişini İşleyen Parametreler Ekleme
Nesne Türlerini ve Biçimlendirme Genişletmeyi
PowerShell