Last week I was trying desperately to understand why something was failing in a PowerShell script of mine.
I am still trying to figure a good way of understand what the problem is, but I ran across a nifty PowerShell feature that I had never heard of before.
$error is a nifty thing. It is an array with methods. Within your script or session it is always capturing your error messages silently in the background and you move along.
Now, the real nifty part of this was when I was trying to capture errors within someone else's cmdlets as commands just kept failing and I could not understand why.
So, before I invoked the command I would clear $error with $error.Clear()
Then execute the command (which always had a clean exit by the way).
Then I would interrogate $error to see what went wrong. Wow, it was huge.
Come to find out, the creator of the cmdlet that I was trying to find the problem with had –silentlycontinue all over the place. So there were all kinds of failures but things just plugged along.
$error let me get all this out. All kinds of errors that were hidden by the developer. All it did was require a bunch of time on my part to unwind and find the actual error that I required.