Just posting a little work-around I created in case you really need to parse the ACL's.
################################
$controller = "10.0.0.1"
$vfiler = "myVfiler"
# connect to the vfiler
Connect-NaController $controller -vfiler $vfiler
# get the list of the shares (this command is not affected by the burt)
$shares = Get-NaCifsShare
# container for the result
$global:aclList = @()
# because of the burt, we get the ACL info through CLI instead
$command = "vfiler run $vfiler cifs shares"
Invoke-NaSsh -Command $command -WarningVariable warningMsg -OutVariable outMsg -ErrorVariable errorMsg 2>&1 | Out-Null
function parseCifsSharesOutput($output){
$acls = @()
$tempshare = ""
# parse the lines
$lines = $output.Split("`n")
foreach($line in $lines){
# if were are past the "----" lines, we can can start parsing
if($infostarted){
# it the line is start with a "tab", it's an acl
if($line.StartsWith("`t")){
# ACL found
$line = $line.Trim()
$acl = $line.Split("/")
if($acl.Count -eq 2){
$newacl = "" | Select ShareName,MountPoint,Description,User,Permission
$newacl.ShareName = $tempshare.ShareName
$newacl.MountPoint = $tempshare.Mountpoint
$newacl.Description = $tempshare.Description
$newacl.User = $acl[0].Trim()
$newacl.Permission = $acl[1].Trim()
$acls += $newacl
}
# if the line does not start with "tab", it is a new share entry
}else{
# new share found
$line = $line.Trim()
# ignore blank lines (normally at the end)
if($line -ne ""){
$share = $line -split "\s+/"
$tempshare = $shares | where{$_.ShareName -eq $share[0].Trim()}
}
}
}
# we ignore all lines until we come accross "----"
if($line.StartsWith("----")){
$infostarted = $true
}
}
$global:aclList = $acls
}
if(-not $warningMsg -and -not $errorMsg){
parseCifsSharesOutput $outMsg
$global:aclList | ft
}else{
write-output "Warning : $warningMsg"
write-output "Error : $errorMsg"
}