views:

73

answers:

1

When writing Powershell cmdlets, what is the difference between EndProcessing and StopProcessing? They sound the same, their descriptions are just about the same, and latter doesn't appear in the cmdlet lifecycle documentation.

+3  A: 

StopProcessing is called if the execution of the CmdLet is cancelled (pressing CNTRL-C will cause StopProcessing to be executed).

EndProcessing is called if the execution of the CmdLet ends normally.

I typically use StopProcessing and EndProcessing to do the same thing... that is to clean up resources that were provisioned during BeginProcessing or ProcessRecord, in some cases though there is some difference between what actions each provides.

It seems like a mistake that it is not shown in the life cycle documentation.

spoon16
Yeah, the key is: it's basically always safe to output things from EndProcessing, but not from StopProcessing, since when StopProcessing is called, the pipeline is basically dead already: either because the user hit Ctrl+C (or used some other host-specific way to stop it) or because of an Exception...
Jaykul