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.
Parametre Kümeleri Hakkında Bilinmesi Gerekenler
Windows PowerShell, bir parametre kümesini birlikte çalışan bir parametre grubu olarak tanımlar. Bir cmdlet'in parametrelerini gruplandırarak, kullanıcının belirttiği parametre grubuna göre işlevselliğini değiştirebilen tek bir cmdlet oluşturabilirsiniz.
Farklı işlevleri tanımlamak için iki parametre kümesi kullanan bir cmdlet örneği, Windows PowerShell tarafından sağlanan Get-EventLog
cmdlet'idir. Bu cmdlet, kullanıcı List
veya LogName
parametresini belirttiğinde farklı bilgiler döndürür.
LogName
parametresi belirtilirse, cmdlet belirli bir olay günlüğündeki olaylar hakkında bilgi döndürür.
List
parametresi belirtilirse, cmdlet günlük dosyaları hakkındaki bilgileri (içerdikleri olay bilgilerini değil) döndürür. Bu durumda, List
ve LogName
parametreleri iki ayrı parametre kümesini tanımlar.
Parametre kümeleri hakkında unutulmaması gereken iki önemli şey, Windows PowerShell çalışma zamanının belirli bir giriş için yalnızca bir parametre kümesi kullanması ve her parametre kümesinin bu parametre kümesi için benzersiz olan en az bir parametreye sahip olması gerektiğidir.
Bu son noktayı göstermek için bu Stop-Proc cmdlet'i üç parametre kümesi kullanır: ProcessName
, ProcessId
ve InputObject
. Bu parametre kümelerinin her biri, diğer parametre kümelerinde olmayan bir parametreye sahiptir. Parametre kümeleri diğer parametreleri paylaşabilir, ancak cmdlet, Windows PowerShell çalışma zamanının kullanması gereken parametre kümesini belirlemek için , ProcessId
ve InputObject
ProcessName
benzersiz parametreleri kullanır.
Cmdlet Sınıfını Bildirme
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çin, cmdlet sistem işlemlerini durdurduğundan "Durdur" yaşam döngüsü fiili kullanılır. cmdlet işlemler üzerinde çalıştığından "Proc" isim adı kullanılır. Aşağıdaki bildirimde, cmdlet fiilinin ve isim adının cmdlet sınıfının adına yansıtıldığını unutmayın.
Uyarı
Onaylanan cmdlet fiil adları hakkında daha fazla bilgi için bkz. Cmdlet Fiil Adları.
Aşağıdaki kod, bu Stop-Proc cmdlet'i için sınıf tanımıdır.
[Cmdlet(VerbsLifecycle.Stop, "Proc",
DefaultParameterSetName = "ProcessId",
SupportsShouldProcess = true)]
public class StopProcCommand : PSCmdlet
<Cmdlet(VerbsLifecycle.Stop, "Proc", DefaultParameterSetName:="ProcessId", _
SupportsShouldProcess:=True)> _
Public Class StopProcCommand
Inherits PSCmdlet
Cmdlet'in Parametrelerini Bildirme
Bu cmdlet, cmdlet'e giriş olarak gereken üç parametreyi (bu parametreler parametre kümelerini de tanımlar) ve cmdlet'in ne yaptığını yöneten bir Force
parametresi ve cmdlet'in işlem hattı üzerinden bir çıkış nesnesi gönderip göndermediğini belirleyen bir PassThru
parametresi tanımlar. Varsayılan olarak, bu cmdlet bir nesneyi işlem hattından geçirmez. Bu son iki parametre hakkında daha fazla bilgi için bkz. SystemDeğiştiren Bir Cmdlet Oluşturma .
Ad Parametresini Bildirme
Bu giriş parametresi, kullanıcının durdurulacak işlemlerin adlarını belirtmesine olanak tanır.
System.Management.Automation.ParameterAttribute özniteliğinin ParameterSetName
öznitelik anahtar sözcüğü, bu parametre için ayarlanan ProcessName
parametresini belirtir.
[Parameter(
Position = 0,
ParameterSetName = "ProcessName",
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;
<Parameter(Position:=0, ParameterSetName:="ProcessName", _
Mandatory:=True, _
ValueFromPipeline:=True, ValueFromPipelineByPropertyName:=True, _
HelpMessage:="The name of one or more processes to stop. " & _
"Wildcards are permitted."), [Alias]("ProcessName")> _
Public Property Name() As String()
Get
Return processNames
End Get
Set(ByVal value As String())
processNames = value
End Set
End Property
Private processNames() As String
Bu parametreye "ProcessName" diğer adının verildiğini de unutmayın.
Kimlik Parametresini Bildirme
Bu giriş parametresi, kullanıcının durdurulacak işlemlerin tanımlayıcılarını belirtmesine olanak tanır.
System.Management.Automation.ParameterAttribute özniteliğinin ParameterSetName
öznitelik anahtar sözcüğü, ProcessId
parametre kümesini belirtir.
[Parameter(
ParameterSetName = "ProcessId",
Mandatory = true,
ValueFromPipelineByPropertyName = true,
ValueFromPipeline = true
)]
[Alias("ProcessId")]
public int[] Id
{
get { return processIds; }
set { processIds = value; }
}
private int[] processIds;
<Parameter(ParameterSetName:="ProcessId", _
Mandatory:=True, _
ValueFromPipelineByPropertyName:=True, _
ValueFromPipeline:=True), [Alias]("ProcessId")> _
Public Property Id() As Integer()
Get
Return processIds
End Get
Set(ByVal value As Integer())
processIds = value
End Set
End Property
Private processIds() As Integer
Bu parametreye "ProcessId" diğer adının verildiğini de unutmayın.
InputObject Parametresini Bildirme
Bu giriş parametresi, kullanıcının durdurulacak işlemler hakkında bilgi içeren bir giriş nesnesi belirtmesine olanak tanır.
System.Management.Automation.ParameterAttribute özniteliğinin ParameterSetName
öznitelik anahtar sözcüğü, bu parametre için ayarlanan InputObject
parametresini belirtir.
[Parameter(
ParameterSetName = "InputObject",
Mandatory = true,
ValueFromPipeline = true)]
public Process[] InputObject
{
get { return inputObject; }
set { inputObject = value; }
}
private Process[] inputObject;
<Parameter(ParameterSetName:="InputObject", _
Mandatory:=True, ValueFromPipeline:=True)> _
Public Property InputObject() As Process()
Get
Return myInputObject
End Get
Set(ByVal value As Process())
myInputObject = value
End Set
End Property
Private myInputObject() As Process
Bu parametrenin diğer adı olmadığını da unutmayın.
Birden Çok Parametre Kümesinde Parametre Bildirme
Her parametre kümesi için benzersiz bir parametre olması gerekse de, parametreler birden fazla parametre kümesine ait olabilir. Bu gibi durumlarda, paylaşılan parametreye, parametrenin ait olduğu her küme için system.management.automation.parameterAttribute öznitelik bildirimi verin. Parametre tüm parametre kümelerindeyse, parametre özniteliğini yalnızca bir kez bildirmeniz ve parametre kümesi adını belirtmeniz gerekmez.
Giriş İşleme Yöntemini Geçersiz Kılma
Her cmdlet'in bir giriş işleme yöntemini geçersiz kılması gerekir; çoğu zaman bu System.Management.Automation.Cmdlet.ProcessRecord yöntemi olacaktır. Bu cmdlet'te System.Management.Automation.Cmdlet.ProcessRecord yöntemi geçersiz kılınarak cmdlet'in herhangi bir sayıda işlemi işleyebilmesini sağlar. Kullanıcının belirttiği parametre kümesine göre farklı bir yöntem çağıran bir Select deyimi içerir.
protected override void ProcessRecord()
{
switch (ParameterSetName)
{
case "ProcessName":
ProcessByName();
break;
case "ProcessId":
ProcessById();
break;
case "InputObject":
foreach (Process process in inputObject)
{
SafeStopProcess(process);
}
break;
default:
throw new ArgumentException("Bad ParameterSet Name");
} // switch (ParameterSetName...
} // ProcessRecord
Protected Overrides Sub ProcessRecord()
Select Case ParameterSetName
Case "ProcessName"
ProcessByName()
Case "ProcessId"
ProcessById()
Case "InputObject"
Dim process As Process
For Each process In myInputObject
SafeStopProcess(process)
Next process
Case Else
Throw New ArgumentException("Bad ParameterSet Name")
End Select
End Sub 'ProcessRecord ' ProcessRecord
Select deyimi tarafından çağrılan Yardımcı yöntemleri burada açıklanmaz, ancak uygulamalarını sonraki bölümdeki tam kod örneğinde görebilirsiniz.
Kod Örneği
C# örnek kodunun tamamı için bkz. StopProcessSample04 Ö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
Cmdlet'i uyguladıktan sonra, bir Windows PowerShell ek bileşeni aracılığıyla 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 edin. Burada, ProcessId
ve InputObject
parametrelerinin bir işlemi durdurmak için parametre kümelerini test etmek için nasıl kullanılabileceğini gösteren bazı testler yer alır.
Windows PowerShell başlatıldığında, Stop-Proc cmdlet'ini
ProcessId
parametresi ayarlı olarak çalıştırarak tanımlayıcısına dayalı bir işlemi durdurun. Bu durumda, cmdlet işlemi durdurmak için ayarlananProcessId
parametresini kullanıyor.PS> Stop-Proc -Id 444 Confirm Are you sure you want to perform this action? Performing operation "Stop-Proc" on Target "notepad (444)". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y
Windows PowerShell başlatıldığında,
Get-Process
komutu tarafından alınan Not Defteri nesnesinde işlemleri durdurmak içinInputObject
parametresi ayarlanmış Stop-Proc cmdlet'ini çalıştırın.PS> Get-Process notepad | Stop-Proc Confirm Are you sure you want to perform this action? Performing operation "Stop-Proc" on Target "notepad (444)". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): N
Ayrıca Bkz.
Sistem Değiştiren Bir Cmdlet Oluşturma
Windows PowerShell Cmdlet Oluşturma
Nesne Türlerini ve Biçimlendirme Genişletmeyi
Cmdlet'leri, Sağlayıcıları ve Konak Uygulamalarını Kaydetme
Windows PowerShell SDK
PowerShell