Microsoft Virtualization Discussions

How can I process Warning or Error messages from Invoke-NaSsh

skellner
3,894 Views

I'm using the cmdlet Invoke-NaSsh to issue ontap commands that don't have an API call. In this case I want to apply fsecurity configs to a volume. So far I was not able to get the warning or error message that is displayed in the powershell console into a variable. I'd like to check if the command throwed an error. Any help is highly appreciated. I attach the scrit and the console output. Thanks in advance.

Import-Module DataONTAP

$napasswd    = "p@assw0rd"        # Password for the Hosting-Filer, the VFiler and the AD Administrator User

$nahost        = "g100bpmc002.g100.intern"        # Name of the Hosting Filer

$navfiler    = "v998spnvv1999gl"        # Name of the VFiler (also the NetBIOS Name of the VFiler)

$filename    = "aclg999l.conf"

$napath        = "/vol/" + $navfiler + "/" + $filename

$filedata    = "cb56f6f4"

$volname    = "g999_filelight_001"

$command    = "vfiler run " + $navfiler + " fsecurity apply " + $napath

#$command    = "vfiler run " + $navfiler + " cifs shares"

Invoke-NaSsh -Controller $nahost -Command $command -Cred wfauser

PS D:\wfa> .\Test_Invoke-NaSsh.ps1

===== v998spnvv1999gl

WARNUNG: fsecurity: /vol/v998spnvv1999gl/aclg999l.conf (Line 2): Unable to parse the security SDDL string.

fsecurity: /vol/v998spnvv1999gl/aclg999l.conf (Line 3): Unable to parse the security SDDL string.

fsecurity: Unable to parse the definition file, quitting.

2 REPLIES 2

cknight
3,894 Views

Stefan, you can use PowerShell's error handling for that.  See 'help about_commonparameters'.

For example, you can capture warnings like this:

PS C:\> Invoke-NaSsh asdf -WarningVariable warn

WARNING: asdf not found.  Type '?' for a list of commands

PS C:\> $warn[0] | fl

Message               : asdf not found.  Type '?' for a list of commands

InvocationInfo        : System.Management.Automation.InvocationInfo

PipelineIterationInfo : {0, 1}

If you want your script to stop execution if you get a warning, that's easy too:

PS C:\> Invoke-NaSsh asdf -WarningVariable warn -WarningAction stop

WARNING: asdf not found.  Type '?' for a list of commands

Invoke-NaSsh : Command execution stopped because the preference variable "WarningPreference" or common parameter is set to Stop.

At line:1 char:13

+ invoke-nassh <<<<  asdf -WarningVariable warn -WarningAction stop

    + CategoryInfo          : OperationStopped: (:) [Invoke-NaSsh], ParentContainsErrorRecordException

    + FullyQualifiedErrorId : ActionPreferenceStop,DataONTAP.PowerShell.SDK.Cmdlets.Toolkit.Ssh.InvokeNaSsh

madden
3,894 Views

Hi Clinton,

Do we have any kind of fsecurity equivalent cmdlet on the roadmap?  It would be nice to be able to set permissions on qtrees and folders via a cmdlet in a similar manner to Set-NaCifsShareAcl.

Thanks,

Chris

Public