Metodi di elaborazione degli input dei cmdlet

I cmdlet devono eseguire l'override di uno o più metodi di elaborazione dell'input descritti in questo argomento per eseguire il proprio lavoro. Questi metodi consentono al cmdlet di eseguire operazioni di pre-elaborazione, elaborazione di input e post-elaborazione. Questi metodi consentono anche di arrestare l'elaborazione dei cmdlet. Per un esempio più dettagliato di come usare questi metodi, vedere Esercitazione su SelectStr.

Operazioni di pre-elaborazione

I cmdlet devono eseguire l'override del metodo System.Management.Automation.Cmdlet.BeginProcessing per aggiungere eventuali operazioni di pre-elaborazione valide per tutti i record che verranno elaborati successivamente dal cmdlet. Quando PowerShell elabora una pipeline di comandi, PowerShell chiama questo metodo una volta per ogni istanza del cmdlet nella pipeline. Per altre informazioni sul modo in cui PowerShell richiama la pipeline di comandi, vedere Ciclo di vita dell'elaborazione dei cmdlet.

Il codice seguente illustra un'implementazione del metodo BeginProcessing.

protected override void BeginProcessing()
{
  // Replace the WriteObject method with the logic required by your cmdlet.
  WriteObject("This is a test of the BeginProcessing template.");
}

Operazioni di elaborazione dell'input

I cmdlet possono eseguire l'override del metodo System.Management.Automation.Cmdlet.ProcessRecord per elaborare l'input inviato al cmdlet. Quando PowerShell elabora una pipeline di comandi, PowerShell chiama questo metodo per ogni record di input elaborato dal cmdlet. Per altre informazioni sul modo in cui PowerShell richiama la pipeline di comandi, vedere Ciclo di vita dell'elaborazione dei cmdlet.

Il codice seguente illustra un'implementazione del metodo ProcessRecord.

protected override void ProcessRecord()
{
  // Replace the WriteObject method with the logic required by your cmdlet.
  WriteObject("This is a test of the ProcessRecord template.");
}

Operazioni di post-elaborazione

I cmdlet devono eseguire l'override del metodo System.Management.Automation.Cmdlet.EndProcessing per aggiungere eventuali operazioni di post-elaborazione valide per tutti i record elaborati dal cmdlet. Ad esempio, il cmdlet potrebbe dover pulire le variabili oggetto al termine dell'elaborazione.

Quando PowerShell elabora una pipeline di comandi, PowerShell chiama questo metodo una volta per ogni istanza del cmdlet nella pipeline. È tuttavia importante ricordare che il runtime di PowerShell non chiamerà il metodo EndProcessing se il cmdlet viene annullato a metà dell'elaborazione dell'input o se si verifica un errore di terminazione in qualsiasi parte del cmdlet. Per questo motivo, un cmdlet che richiede la pulizia degli oggetti deve implementare il modello System.IDisposable completo, incluso un finalizzatore, in modo che il runtime possa chiamare entrambi i metodi EndProcessing e System.IDisposable.Dispose al termine dell'elaborazione. Per altre informazioni sul modo in cui PowerShell richiama la pipeline di comandi, vedere Ciclo di vita dell'elaborazione dei cmdlet.

Il codice seguente illustra un'implementazione del metodo EndProcessing.

protected override void EndProcessing()
{
  // Replace the WriteObject method with the logic required by your cmdlet.
  WriteObject("This is a test of the EndProcessing template.");
}

Vedere anche

System.Management.Automation.Cmdlet.BeginProcessing

System.Management.Automation.Cmdlet.ProcessRecord

System.Management.Automation.Cmdlet.EndProcessing

Esercitazione su SelectStr

System.IDisposable

SDK della shell di Windows PowerShell