Cmdlet-Eingabeverarbeitungsmethoden
Cmdlets müssen eine oder mehrere der in diesem Thema beschriebenen Eingabeverarbeitungsmethoden überschreiben, um ihre Arbeit auszuführen. Diese Methoden ermöglichen dem Cmdlet das Ausführen von Vorverarbeitungs-, Eingabe- und Nachverarbeitungsvorgängen. Mit diesen Methoden können Sie auch die Cmdlet-Verarbeitung beenden. Ein ausführlicheres Beispiel für die Verwendung dieser Methoden finden Sie unter SelectStr Tutorial.
Vorverarbeitungsvorgänge
Cmdlets sollten die System.Management.Automation.Cmdlet.BeginProcessing-Methode überschreiben, um alle Vorverarbeitungsvorgänge hinzuzufügen, die für alle Datensätze gültig sind, die später vom Cmdlet verarbeitet werden. Wenn PowerShell eine Befehlspipeline verarbeitet, ruft PowerShell diese Methode einmal für jede Instanz des Cmdlets in der Pipeline auf. Weitere Informationen dazu, wie PowerShell die Befehlspipeline aufruft, finden Sie unter Lebenszyklus der Cmdlet-Verarbeitung.
Der folgende Code zeigt eine Implementierung der BeginProcessing-Methode.
protected override void BeginProcessing()
{
// Replace the WriteObject method with the logic required by your cmdlet.
WriteObject("This is a test of the BeginProcessing template.");
}
Eingabeverarbeitungsvorgänge
Cmdlets können die System.Management.Automation.Cmdlet.ProcessRecord-Methode überschreiben, um die Eingabe zu verarbeiten, die an das Cmdlet gesendet wird. Wenn PowerShell eine Befehlspipeline verarbeitet, ruft PowerShell diese Methode für jeden Eingabedatensatz auf, der vom Cmdlet verarbeitet wird. Weitere Informationen dazu, wie PowerShell die Befehlspipeline aufruft, finden Sie unter Lebenszyklus der Cmdlet-Verarbeitung.
Der folgende Code zeigt eine Implementierung der ProcessRecord-Methode.
protected override void ProcessRecord()
{
// Replace the WriteObject method with the logic required by your cmdlet.
WriteObject("This is a test of the ProcessRecord template.");
}
Nachbearbeitungsvorgänge
Cmdlets sollten die System.Management.Automation.Cmdlet.EndProcessing-Methode überschreiben, um alle Nachverarbeitungsvorgänge hinzuzufügen, die für alle vom Cmdlet verarbeiteten Datensätze gültig sind. Beispielsweise muss Ihr Cmdlet möglicherweise Objektvariablen bereinigen, nachdem die Verarbeitung abgeschlossen ist.
Wenn PowerShell eine Befehlspipeline verarbeitet, ruft PowerShell diese Methode einmal für jede Instanz des Cmdlets in der Pipeline auf. Beachten Sie jedoch, dass die PowerShell-Runtime die EndProcessing-Methode nicht aufruft, wenn das Cmdlet während der Eingabeverarbeitung abgebrochen wird oder wenn in einem Teil des Cmdlets ein Abbruchfehler auftritt. Aus diesem Grund sollte ein Cmdlet, das eine Objektbereinigung erfordert, das vollständige System.IDisposable-Muster implementieren, einschließlich eines Finalizers, damit die Laufzeit am Ende der Verarbeitung sowohl die EndProcessing- als auch die System.IDisposable.Dispose-Methode aufrufen kann. Weitere Informationen dazu, wie PowerShell die Befehlspipeline aufruft, finden Sie unter Lebenszyklus der Cmdlet-Verarbeitung.
Der folgende Code zeigt eine Implementierung der EndProcessing-Methode.
protected override void EndProcessing()
{
// Replace the WriteObject method with the logic required by your cmdlet.
WriteObject("This is a test of the EndProcessing template.");
}
Weitere Informationen
System.Management.Automation.Cmdlet.BeginProcessing
System.Management.Automation.Cmdlet.ProcessRecord