<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Invoke-NaSnapmirrorUpdate and error handling in Microsoft Virtualization Discussions</title>
    <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Invoke-NaSnapmirrorUpdate-and-error-handling/m-p/43881#M2086</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Excellent point Clinton,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you change the behavior to throw a terminating error, then you can use try/catch.&amp;nbsp; Beware however if you use this with a pipeline.&amp;nbsp; Let's say I do something like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;PS C:\&amp;gt; $SIM1=connect-nacontroller SIM1&lt;BR /&gt;PS C:\&amp;gt; Write-Host "Sending invalid command"&lt;BR /&gt;Sending invalid command&lt;BR /&gt;PS C:\&amp;gt; try {get-navol -Controller $SIM1| Invoke-nasnapmirrorupdate} catch {Write-Host "Caught exception."}&lt;BR /&gt;Invoke-NaSnapmirrorUpdate : Source not set on command line or in /etc/snapmirror.conf file.&lt;BR /&gt;At line:1 char:60&lt;BR /&gt;+ try {get-navol -Controller $SIM1| Invoke-nasnapmirrorupdate &amp;lt;&amp;lt;&amp;lt;&amp;lt; } catch {Write-Host "Caught exception."}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidOperation: (NetApp.Ontapi.Filer.NaController:NaController) [Invoke-NaSnapmirrorUpdate], ESNAPMIRRORPARSERERROR&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ApiException,DataONTAP.PowerShell.SDK.Cmdlets.Snapmirror.InvokeNaSnapmirrorUpdate&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Invoke-NaSnapmirrorUpdate : Source not set on command line or in /etc/snapmirror.conf file.&lt;BR /&gt;At line:1 char:60&lt;BR /&gt;+ try {get-navol -Controller $SIM1| Invoke-nasnapmirrorupdate &amp;lt;&amp;lt;&amp;lt;&amp;lt; } catch {Write-Host "Caught exception."}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidOperation: (NetApp.Ontapi.Filer.NaController:NaController) [Invoke-NaSnapmirrorUpdate], ESNAPMIRRORPARSERERROR&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ApiException,DataONTAP.PowerShell.SDK.Cmdlets.Snapmirror.InvokeNaSnapmirrorUpdate&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Invoke-NaSnapmirrorUpdate : Source not set on command line or in /etc/snapmirror.conf file.&lt;BR /&gt;At line:1 char:60&lt;BR /&gt;+ try {get-navol -Controller $SIM1| Invoke-nasnapmirrorupdate &amp;lt;&amp;lt;&amp;lt;&amp;lt; } catch {Write-Host "Caught exception."}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidOperation: (NetApp.Ontapi.Filer.NaController:NaController) [Invoke-NaSnapmirrorUpdate], ESNAPMIRRORPARSERERROR&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ApiException,DataONTAP.PowerShell.SDK.Cmdlets.Snapmirror.InvokeNaSnapmirrorUpdate&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Invoke-NaSnapmirrorUpdate : Source not set on command line or in /etc/snapmirror.conf file.&lt;BR /&gt;At line:1 char:60&lt;BR /&gt;+ try {get-navol -Controller $SIM1| Invoke-nasnapmirrorupdate &amp;lt;&amp;lt;&amp;lt;&amp;lt; } catch {Write-Host "Caught exception."}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidOperation: (NetApp.Ontapi.Filer.NaController:NaController) [Invoke-NaSnapmirrorUpdate], ESNAPMIRRORPARSERERROR&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ApiException,DataONTAP.PowerShell.SDK.Cmdlets.Snapmirror.InvokeNaSnapmirrorUpdate&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Invoke-NaSnapmirrorUpdate : Source not set on command line or in /etc/snapmirror.conf file.&lt;BR /&gt;At line:1 char:60&lt;BR /&gt;+ try {get-navol -Controller $SIM1| Invoke-nasnapmirrorupdate &amp;lt;&amp;lt;&amp;lt;&amp;lt; } catch {Write-Host "Caught exception."}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidOperation: (NetApp.Ontapi.Filer.NaController:NaController) [Invoke-NaSnapmirrorUpdate], ESNAPMIRRORPARSERERROR&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ApiException,DataONTAP.PowerShell.SDK.Cmdlets.Snapmirror.InvokeNaSnapmirrorUpdate&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;PS C:\&amp;gt; Write-Host "Done"&lt;BR /&gt;Done&lt;BR /&gt;PS C:\&amp;gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have several volumes, but no snapmirror relationships. because I piped the output of get na-vol to Invoke-nasnapmirrorupdate, I see a failure for each volume in my collection.&amp;nbsp; This happens specifically because the error is non-terminating.&amp;nbsp; Now, if I make it a terminating error and put it in try-catch:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;PS C:\&amp;gt; $SIM1=connect-nacontroller SIM1&lt;BR /&gt;PS C:\&amp;gt; Write-Host "Sending invalid command"&lt;BR /&gt;Sending invalid command&lt;BR /&gt;PS C:\&amp;gt; try {get-navol -Controller $SIM1| Invoke-nasnapmirrorupdate -ErrorAction Stop} catch {Write-Host "Caught exception."}&lt;BR /&gt;Caught exception.&lt;BR /&gt;PS C:\&amp;gt; Write-Host "Done"&lt;BR /&gt;Done&lt;BR /&gt;PS C:\&amp;gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It bails on the first error and does not even try the rest of the volumes in my collection.&amp;nbsp; What to do?&amp;nbsp; I pipe the output of get-navol to a foreach-object statement where I process the try-catch:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;PS C:\&amp;gt; $SIM1=connect-nacontroller SIM1&lt;BR /&gt;PS C:\&amp;gt; Write-Host "Sending invalid command"&lt;BR /&gt;Sending invalid command&lt;BR /&gt;PS C:\&amp;gt; get-navol | foreach-object -Process {try {Invoke-nasnapmirrorupdate $_ -ErrorAction Stop} catch {Write-Host "Caught exception."}}&lt;BR /&gt;Caught exception.&lt;BR /&gt;Caught exception.&lt;BR /&gt;Caught exception.&lt;BR /&gt;Caught exception.&lt;BR /&gt;Caught exception.&lt;BR /&gt;PS C:\&amp;gt; Write-Host "Done"&lt;BR /&gt;Done&lt;BR /&gt;PS C:\&amp;gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Happy Scripting&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;J&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Mon, 28 Jun 2010 02:54:21 GMT</pubDate>
    <dc:creator>fjohn</dc:creator>
    <dc:date>2010-06-28T02:54:21Z</dc:date>
    <item>
      <title>Invoke-NaSnapmirrorUpdate and error handling</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Invoke-NaSnapmirrorUpdate-and-error-handling/m-p/43864#M2082</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi Community,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In my scripts, I’m using try and catch blocks to handle terminating errors.&lt;/P&gt;&lt;P&gt;I don’t know why, but with Invoke-NaSnapmirrorUpdate, my catch block is never called…&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;For example :&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;STRONG&gt;try {Invoke-NaSnapmirrorUpdate -Destination "filer_foo:vol_foo"}&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;STRONG&gt;catch {Write-Host "Invoke-NaSnapmirrorUpdate returned an error"}&lt;/STRONG&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Any idea why?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thank you.&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Jun 2025 07:13:09 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Invoke-NaSnapmirrorUpdate-and-error-handling/m-p/43864#M2082</guid>
      <dc:creator>mignonben</dc:creator>
      <dc:date>2025-06-05T07:13:09Z</dc:date>
    </item>
    <item>
      <title>Re: Invoke-NaSnapmirrorUpdate and error handling</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Invoke-NaSnapmirrorUpdate-and-error-handling/m-p/43868#M2083</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;In order to use a catch block, the cmdlet needs to return an exception.&amp;nbsp; If I call "Invoke-nasnapmirrorupdate $null", then an exception is returned, a ParameterBindingValidationException:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Invoke-NaSnapmirrorUpdate : Cannot bind argument to parameter 'Destination' because it is null.&lt;BR /&gt;At line:1 char:26&lt;BR /&gt;+ invoke-nasnapmirrorupdate &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;nbsp; $null&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidData&amp;amp;colon; (:) [Invoke-NaSnapmirrorUpdate], ParameterBindingValidationException&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,DataONTAP.PowerShell.SDK.Cmdlets.Snapmirror.InvokeNaSnapmirrorUpdate&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;In that case,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;try {invoke-nasnapmirrorupdate $null} catch {"Invoke-NaSnapMirrorUpdate returned an error"}&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;does indeed work printing "Invoke-NaSnapMirrorUpdate returned an error" on the console.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;The problem here seems to be that if invalid parameters make it past validation and are sent in the underlying ZAPI call, like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PS C:\&amp;gt; try {invoke-nasnapmirrorupdate -Source SIM1:vol1 vol1} catch {"Invoke-NaSnapMirrorUpdate returned an error"}&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;Invoke-NaSnapmirrorUpdate : Snapmirror error: destination is not in snapmirrored state&lt;BR /&gt;At line:1 char:31&lt;BR /&gt;+ try {invoke-nasnapmirrorupdate &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;nbsp; -Source SIM1:vol1 vol1} catch {"Invoke-NaSnapMirrorUpdate returned an error"}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidOperation: (NetApp.Ontapi.Filer.NaController:NaController) [Invoke-NaSnapmirrorUpdate], ESNAPMIRRORERROR&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ApiException,DataONTAP.PowerShell.SDK.Cmdlets.Snapmirror.InvokeNaSnapmirrorUpdate&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;As you can see, the problem here is that the cmdlet is not raising an exception at this point for catch to catch.&amp;nbsp;&amp;nbsp; You'd want to specify the error or use trap.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;J&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 27 Jun 2010 17:43:52 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Invoke-NaSnapmirrorUpdate-and-error-handling/m-p/43868#M2083</guid>
      <dc:creator>fjohn</dc:creator>
      <dc:date>2010-06-27T17:43:52Z</dc:date>
    </item>
    <item>
      <title>Re: Invoke-NaSnapmirrorUpdate and error handling</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Invoke-NaSnapmirrorUpdate-and-error-handling/m-p/43873#M2084</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;The majority of cmdlets in the Toolkit don't throw terminating errors if the underlying Data ONTAP API fails, thus allowing them to continue processing pipeline input.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;PowerShell provides the -ErrorAction and $ErrorActionPreference mechanisms to define the behavior when errors occur.&amp;nbsp; You can use "-ErrorAction Stop" with any cmdlet, or you can set $ErrorActionPreference = "Stop" to affect all cmdlets.&amp;nbsp; Either will cause an error to terminate the pipeline with a catchable exception.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;Import-Module DataONTAP &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; &lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: courier new,courier;"&gt; Write-Host "Sending invalid command"&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;try&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp; Get-NaVolAutosize -Name "nonexistent_volume" &lt;STRONG&gt;-ErrorAction Stop&lt;/STRONG&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;catch&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;{&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&amp;nbsp;&amp;nbsp; Write-Host "Caught exception: $_."&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;}&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;Write-Host "Done"&lt;/SPAN&gt;&lt;/P&gt;&lt;P style="padding-left: 30px;"&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="font-family: courier new,courier;"&gt;&lt;SPAN style="font-family: arial,helvetica,sans-serif;"&gt;This works with trap as well, but try/catch is definitely preferable.&lt;/SPAN&gt;&lt;BR /&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Sun, 27 Jun 2010 22:47:19 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Invoke-NaSnapmirrorUpdate-and-error-handling/m-p/43873#M2084</guid>
      <dc:creator>cknight</dc:creator>
      <dc:date>2010-06-27T22:47:19Z</dc:date>
    </item>
    <item>
      <title>Re: Invoke-NaSnapmirrorUpdate and error handling</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Invoke-NaSnapmirrorUpdate-and-error-handling/m-p/43881#M2086</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Excellent point Clinton,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;If you change the behavior to throw a terminating error, then you can use try/catch.&amp;nbsp; Beware however if you use this with a pipeline.&amp;nbsp; Let's say I do something like:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;PS C:\&amp;gt; $SIM1=connect-nacontroller SIM1&lt;BR /&gt;PS C:\&amp;gt; Write-Host "Sending invalid command"&lt;BR /&gt;Sending invalid command&lt;BR /&gt;PS C:\&amp;gt; try {get-navol -Controller $SIM1| Invoke-nasnapmirrorupdate} catch {Write-Host "Caught exception."}&lt;BR /&gt;Invoke-NaSnapmirrorUpdate : Source not set on command line or in /etc/snapmirror.conf file.&lt;BR /&gt;At line:1 char:60&lt;BR /&gt;+ try {get-navol -Controller $SIM1| Invoke-nasnapmirrorupdate &amp;lt;&amp;lt;&amp;lt;&amp;lt; } catch {Write-Host "Caught exception."}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidOperation: (NetApp.Ontapi.Filer.NaController:NaController) [Invoke-NaSnapmirrorUpdate], ESNAPMIRRORPARSERERROR&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ApiException,DataONTAP.PowerShell.SDK.Cmdlets.Snapmirror.InvokeNaSnapmirrorUpdate&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Invoke-NaSnapmirrorUpdate : Source not set on command line or in /etc/snapmirror.conf file.&lt;BR /&gt;At line:1 char:60&lt;BR /&gt;+ try {get-navol -Controller $SIM1| Invoke-nasnapmirrorupdate &amp;lt;&amp;lt;&amp;lt;&amp;lt; } catch {Write-Host "Caught exception."}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidOperation: (NetApp.Ontapi.Filer.NaController:NaController) [Invoke-NaSnapmirrorUpdate], ESNAPMIRRORPARSERERROR&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ApiException,DataONTAP.PowerShell.SDK.Cmdlets.Snapmirror.InvokeNaSnapmirrorUpdate&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Invoke-NaSnapmirrorUpdate : Source not set on command line or in /etc/snapmirror.conf file.&lt;BR /&gt;At line:1 char:60&lt;BR /&gt;+ try {get-navol -Controller $SIM1| Invoke-nasnapmirrorupdate &amp;lt;&amp;lt;&amp;lt;&amp;lt; } catch {Write-Host "Caught exception."}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidOperation: (NetApp.Ontapi.Filer.NaController:NaController) [Invoke-NaSnapmirrorUpdate], ESNAPMIRRORPARSERERROR&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ApiException,DataONTAP.PowerShell.SDK.Cmdlets.Snapmirror.InvokeNaSnapmirrorUpdate&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Invoke-NaSnapmirrorUpdate : Source not set on command line or in /etc/snapmirror.conf file.&lt;BR /&gt;At line:1 char:60&lt;BR /&gt;+ try {get-navol -Controller $SIM1| Invoke-nasnapmirrorupdate &amp;lt;&amp;lt;&amp;lt;&amp;lt; } catch {Write-Host "Caught exception."}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidOperation: (NetApp.Ontapi.Filer.NaController:NaController) [Invoke-NaSnapmirrorUpdate], ESNAPMIRRORPARSERERROR&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ApiException,DataONTAP.PowerShell.SDK.Cmdlets.Snapmirror.InvokeNaSnapmirrorUpdate&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Invoke-NaSnapmirrorUpdate : Source not set on command line or in /etc/snapmirror.conf file.&lt;BR /&gt;At line:1 char:60&lt;BR /&gt;+ try {get-navol -Controller $SIM1| Invoke-nasnapmirrorupdate &amp;lt;&amp;lt;&amp;lt;&amp;lt; } catch {Write-Host "Caught exception."}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + CategoryInfo&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : InvalidOperation: (NetApp.Ontapi.Filer.NaController:NaController) [Invoke-NaSnapmirrorUpdate], ESNAPMIRRORPARSERERROR&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; + FullyQualifiedErrorId : ApiException,DataONTAP.PowerShell.SDK.Cmdlets.Snapmirror.InvokeNaSnapmirrorUpdate&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;PS C:\&amp;gt; Write-Host "Done"&lt;BR /&gt;Done&lt;BR /&gt;PS C:\&amp;gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I have several volumes, but no snapmirror relationships. because I piped the output of get na-vol to Invoke-nasnapmirrorupdate, I see a failure for each volume in my collection.&amp;nbsp; This happens specifically because the error is non-terminating.&amp;nbsp; Now, if I make it a terminating error and put it in try-catch:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;PS C:\&amp;gt; $SIM1=connect-nacontroller SIM1&lt;BR /&gt;PS C:\&amp;gt; Write-Host "Sending invalid command"&lt;BR /&gt;Sending invalid command&lt;BR /&gt;PS C:\&amp;gt; try {get-navol -Controller $SIM1| Invoke-nasnapmirrorupdate -ErrorAction Stop} catch {Write-Host "Caught exception."}&lt;BR /&gt;Caught exception.&lt;BR /&gt;PS C:\&amp;gt; Write-Host "Done"&lt;BR /&gt;Done&lt;BR /&gt;PS C:\&amp;gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;It bails on the first error and does not even try the rest of the volumes in my collection.&amp;nbsp; What to do?&amp;nbsp; I pipe the output of get-navol to a foreach-object statement where I process the try-catch:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;PS C:\&amp;gt; $SIM1=connect-nacontroller SIM1&lt;BR /&gt;PS C:\&amp;gt; Write-Host "Sending invalid command"&lt;BR /&gt;Sending invalid command&lt;BR /&gt;PS C:\&amp;gt; get-navol | foreach-object -Process {try {Invoke-nasnapmirrorupdate $_ -ErrorAction Stop} catch {Write-Host "Caught exception."}}&lt;BR /&gt;Caught exception.&lt;BR /&gt;Caught exception.&lt;BR /&gt;Caught exception.&lt;BR /&gt;Caught exception.&lt;BR /&gt;Caught exception.&lt;BR /&gt;PS C:\&amp;gt; Write-Host "Done"&lt;BR /&gt;Done&lt;BR /&gt;PS C:\&amp;gt;&lt;/STRONG&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Happy Scripting&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;J&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 28 Jun 2010 02:54:21 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Invoke-NaSnapmirrorUpdate-and-error-handling/m-p/43881#M2086</guid>
      <dc:creator>fjohn</dc:creator>
      <dc:date>2010-06-28T02:54:21Z</dc:date>
    </item>
    <item>
      <title>Re: Invoke-NaSnapmirrorUpdate and error handling</title>
      <link>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Invoke-NaSnapmirrorUpdate-and-error-handling/m-p/43886#M2088</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thank you very much to both of you for your answers.&lt;BR /&gt;Now I understand the reason, and in my specific script, the "-ErrorAction Stop" parameter is exactly what I need. (Basic but sorry: I'm new to Powershell&lt;BR /&gt;Thanks again.&lt;BR /&gt;Benoit. &lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Mon, 28 Jun 2010 08:10:17 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Microsoft-Virtualization-Discussions/Invoke-NaSnapmirrorUpdate-and-error-handling/m-p/43886#M2088</guid>
      <dc:creator>mignonben</dc:creator>
      <dc:date>2010-06-28T08:10:17Z</dc:date>
    </item>
  </channel>
</rss>

