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'ler, Windows PowerShell çalışma zamanı tarafından kullanıcıya görüntülenebilen çeşitli türde iletiler yazabilir. Bu iletiler aşağıdaki türleri içerir:
Genel kullanıcı bilgilerini içeren ayrıntılı iletiler.
Sorun giderme bilgilerini içeren iletilerde hata ayıklama.
Cmdlet'in beklenmeyen sonuçlara sahip olabilecek bir işlem gerçekleştirmek üzere olduğunu belirten bir bildirim içeren uyarı iletileri.
uzun süren bir işlem gerçekleştirilirken cmdlet'in ne kadar çalışma tamamlandığı hakkında bilgi içeren ilerleme raporu iletileri.
Cmdlet'inizin yazabileceği ileti sayısı veya cmdlet'inizin yazabileceği ileti türüyle ilgili bir sınır yoktur. Her ileti, cmdlet'inizin giriş işleme yöntemi içinden belirli bir çağrı yapılarak yazılır.
Cmdlet'i 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. Her tür cmdlet, giriş işleme yöntemlerinden kullanıcı bildirimleri yazabilir; bu nedenle, genel olarak, cmdlet'in hangi sistem değişikliklerini gerçekleştirdiğini gösteren herhangi bir fiil kullanarak bu cmdlet'i adlandırabilirsiniz. Onaylanan cmdlet fiilleri hakkında daha fazla bilgi için bkz. Cmdlet Fiil Adları.
Stop-Proc cmdlet'i sistemi değiştirmek için tasarlanmıştır; bu nedenle, .NET sınıfı için System.Management.Automation.CmdletAttribute bildiriminin SupportsShouldProcess öznitelik anahtar sözcüğünü içermesi ve trueolarak ayarlanması gerekir.
Aşağıdaki kod, bu Stop-Proc cmdlet sınıfının tanımıdır. Bu tanım hakkında daha fazla bilgi için bkz. SystemDeğiştiren Bir Cmdlet Oluşturma .
[Cmdlet(VerbsLifecycle.Stop, "proc",
SupportsShouldProcess = true)]
public class StopProcCommand : Cmdlet
Sistem Değişikliği için Parametreleri Tanımlama
Stop-Proc cmdlet'i üç parametre tanımlar: Name, Forceve PassThru. Bu parametreleri tanımlama hakkında daha fazla bilgi için bkz. SystemDeğiştiren Bir Cmdlet Oluşturma .
Stop-Proc cmdlet'i için parametre bildirimi aşağıdadır.
[Parameter(
Position = 0,
Mandatory = true,
ValueFromPipeline = true,
ValueFromPipelineByPropertyName = true
)]
public string[] Name
{
get { return processNames; }
set { processNames = value; }
}
private string[] processNames;
/// <summary>
/// Specify the Force parameter that allows the user to override
/// the ShouldContinue call to force the stop operation. This
/// parameter should always be used with caution.
/// </summary>
[Parameter]
public SwitchParameter Force
{
get { return force; }
set { force = value; }
}
private bool force;
/// <summary>
/// Specify the PassThru parameter that allows the user to specify
/// that the cmdlet should pass the process object down the pipeline
/// after the process has been stopped.
/// </summary>
[Parameter]
public SwitchParameter PassThru
{
get { return passThru; }
set { passThru = value; }
}
private bool passThru;
Giriş İşleme Yöntemini Geçersiz Kılma
Cmdlet'inizin bir giriş işleme yöntemini geçersiz kılması gerekir; çoğu zaman System.Management.Automation.Cmdlet.ProcessRecordolur. Bu Stop-Proc cmdlet'i, System.Management.Automation.Cmdlet.ProcessRecord giriş işleme yöntemini geçersiz kılar. Stop-Proc cmdlet'inin bu uygulamasında ayrıntılı iletiler, hata ayıklama iletileri ve uyarı iletileri yazmak için çağrılar yapılır.
Uyarı
Bu yöntemin System.Management.Automation.Cmdlet.ShouldProcess ve System.Management.Automation.Cmdlet.ShouldContinue yöntemlerini nasıl çağırdığını hakkında daha fazla bilgi için bkz. SystemDeğiştiren Bir Cmdlet Oluşturma.
Ayrıntılı İleti Yazma
System.Management.Automation.Cmdlet.WriteVerbose yöntemi, belirli hata koşullarıyla ilgili olmayan genel kullanıcı düzeyi bilgileri yazmak için kullanılır. Sistem yöneticisi daha sonra bu bilgileri kullanarak diğer komutları işlemeye devam edebilir. Ayrıca, bu yöntem kullanılarak yazılan tüm bilgiler gerektiğinde yerelleştirilmelidir.
Bu Stop-Proc cmdlet'inden alınan aşağıdaki kod, System.Management.Automation.Cmdlet.ProcessRecord yönteminin geçersiz kılınarak System.Management.Automation.Cmdlet.WriteVerbose yöntemine yapılan iki çağrıyı gösterir.
message = String.Format("Attempting to stop process \"{0}\".", name);
WriteVerbose(message);
message = String.Format("Stopped process \"{0}\", pid {1}.",
processName, process.Id);
WriteVerbose(message);
Hata Ayıklama İletisi Yazma
System.Management.Automation.Cmdlet.WriteDebug yöntemi, cmdlet'in çalışmasını gidermek için kullanılabilecek hata ayıklama iletileri yazmak için kullanılır. Çağrı bir giriş işleme yönteminden yapılır.
Uyarı
Windows PowerShell ayrıca hem ayrıntılı hem de hata ayıklama bilgilerini sunan bir Debug parametresi tanımlar. Cmdlet'iniz bu parametreyi destekliyorsa, System.Management.Automation.Cmdlet.WriteVerboseçağıran kodda System.Management.Automation.Cmdlet.WriteDebug çağırması gerekmez.
Örnek Stop-Proc cmdlet'indeki kodun aşağıdaki iki bölümü, System.Management.Automation.Cmdlet.ProcessRecord yönteminin geçersiz kılınarak System.Management.Automation.Cmdlet.WriteDebug yöntemine yapılan çağrıları gösterir.
Bu hata ayıklama iletisi, System.Management.Automation.Cmdlet.ShouldProcess çağrılmadan hemen önce yazılır.
message =
String.Format("Acquired name for pid {0} : \"{1}\"",
process.Id, processName);
WriteDebug(message);
Bu hata ayıklama iletisi, System.Management.Automation.Cmdlet.WriteObject çağrılmadan hemen önce yazılır.
message =
String.Format("Writing process \"{0}\" to pipeline",
processName);
WriteDebug(message);
WriteObject(process);
Windows PowerShell, tüm System.Management.Automation.Cmdlet.WriteDebug çağrılarını izleme altyapısına ve cmdlet'lerine otomatik olarak yönlendirir. Bu, cmdlet'i içinde herhangi bir ek geliştirme çalışması yapmanıza gerek kalmadan yöntem çağrılarının barındırma uygulamasına, dosyaya veya hata ayıklayıcıya izlenmesini sağlar. Aşağıdaki komut satırı girdisi bir izleme işlemi uygular.
ps> Trace-Expression Stop-Proc -File proc.log -Command Stop-Proc not defteri
Uyarı İletisi Yazma
System.Management.Automation.Cmdlet.WriteWarning yöntemi, cmdlet beklenmeyen bir sonuçla sonuçlanabilecek bir işlem gerçekleştirmek üzereyken (örneğin, salt okunur bir dosyanın üzerine yazma) uyarı yazmak için kullanılır.
Örnek Stop-Proc cmdlet'inden alınan aşağıdaki kod, System.Management.Automation.Cmdlet.ProcessRecord yönteminin geçersiz kılınan System.Management.Automation.Cmdlet.WriteWarning yöntemine yapılan çağrıyı gösterir.
if (criticalProcess)
{
message =
String.Format("Stopping the critical process \"{0}\".",
processName);
WriteWarning(message);
} // if (criticalProcess...
İlerleme İletisi Yazma
System.Management.Automation.Cmdlet.WriteProgress, cmdlet işlemlerinin tamamlanması uzun zaman kullandığında ilerleme iletileri yazmak için kullanılır. System.Management.Automation.Cmdlet.WriteProgress çağrısı, kullanıcıya işlenmesi için barındırma uygulamasına gönderilen bir System.Management.Automation.Progressrecord nesnesi geçirir.
Uyarı
Bu Stop-Proc cmdlet'i, System.Management.Automation.Cmdlet.WriteProgress yöntemine çağrı içermez.
Aşağıdaki kod, bir öğeyi kopyalamaya çalışan bir cmdlet tarafından yazılmış bir ilerleme iletisi örneğidir.
int myId = 0;
string myActivity = "Copy-item: Copying *.* to C:\abc";
string myStatus = "Copying file bar.txt";
ProgressRecord pr = new ProgressRecord(myId, myActivity, myStatus);
WriteProgress(pr);
pr.RecordType = ProgressRecordType.Completed;
WriteProgress(pr);
Kod Örneği
C# örnek kodunun tamamı için bkz. StopProcessSample02 Ö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 edebilirsiniz. Şimdi örnek Stop-Proc cmdlet'ini test edelim. Komut satırından cmdlet'leri kullanma hakkında daha fazla bilgi için bkz. Windows PowerShell ile Çalışmaya Başlama .
Aşağıdaki komut satırı girdisi, "NOT DEFTERI" adlı işlemi durdurmak, ayrıntılı bildirimler sağlamak ve hata ayıklama bilgilerini yazdırmak için Stop-Proc kullanır.
PS> Stop-Proc -Name notepad -Verbose -DebugAşağıdaki çıkış görüntülenir.
VERBOSE: Attempting to stop process " notepad ". DEBUG: Acquired name for pid 5584 : "notepad" Confirm Continue with this operation? [Y] Yes [A] Yes to All [H] Halt Command [S] Suspend [?] Help (default is "Y"): Y Confirm Are you sure you want to perform this action? Performing operation "Stop-Proc" on Target "notepad (5584)". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): Y VERBOSE: Stopped process "notepad", pid 5584.
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