Microsoft Virtualization Discussions
Microsoft Virtualization Discussions
This is my first foray into trying to trap a specific error in powershell with try/catch and I am stuck. I can't seem to figure out what exactly I need to use to trap this error. I have a loop that is checking a collection of filers, this section of the code is looking for un-failed, un-owned disks. Four of our filers have hardware ownership rather than software ownership so this command fails when run against them. I want to trap for this specific error and just simply continue. The code below is as far as I have gotten, I can't even trap the error and get it to write to the console. What am I doing wrong?
I used this command to get the Sytem.InvalidOperationException; $error[0].Exception.psobject.typenames[0]
try {Get-NaDiskOwner -Controller $controller | Where-Object {$_.Owner -lt '' -and $_.IsFailed -eq 0}}
catch[System.InvalidOperationException]{"An Error Occurred"}
This is the error;
Get-NaDiskOwner : SANOWN not enabled.
At C:\Users\M00627~1.MFA\AppData\Local\Temp\Untitled5.ps1:4 char:16
+ Get-NaDiskOwner <<<< -Controller $controller | Where-Object {$_.Owner -lt '' -and $_.IsFailed -eq 0}}
+ CategoryInfo : InvalidOperation: (rchnas02n1:NaController) [Get-NaDiskOwner], ECIFSSHARINGVIOLATION
+ FullyQualifiedErrorId : ApiException,DataONTAP.PowerShell.SDK.Cmdlets.Disk.GetNaDiskOwner
Solved! See The Solution
Try this:
Get-NaDiskOwner -Controller $controller -ErrorAction SilentlyContinue
The Toolkit throws mostly non-terminating errors, so try/catch isn't going to help unless you set the error action to "Stop".
Try this:
Get-NaDiskOwner -Controller $controller -ErrorAction SilentlyContinue
The Toolkit throws mostly non-terminating errors, so try/catch isn't going to help unless you set the error action to "Stop".
Ok, that explains why I couldn't get try/catch to work. I will most likely use this syntax and then check the variable $err for anything other than the SANOWN error. Thanks Clinton.
Get-NaDiskOwner -Controller $controller -ErrorAction SilentlyContinue -ErrorVariable err | Where-Object {$_.Owner -lt '' -and $_.IsFailed -eq 0}