I blogged this script earlier, but discovered an undocumented feature where the last entry in the output was not added to the array object. Here is the updated version
Write-Host "Running sdcli disk list"
$diskInfo = Invoke-Expression "sdcli disk list"
$sdclidisks = @()
$fields = "UNCPath","LUNPath","StorageSystem","StorageSystemPath","Type","Diskserialnumber","BackedbySnapshotCopy"
$fields += "Shared","BootOrSystemDisk","SCSIport","Bus","Target","LUN","Readonly","Size","SnapmirrorSource","SnapvaultPrimary"
$fields += "DiskPartitionStyle","CloneSplitRestorestatus","DiskID","VolumeName","Mountpoints","IPAddresses","FCinitiatorWWPN"
ForEach($Item in $DiskInfo){
$tmpItem = $Item.Trim()
$tmpItemSplit = $tmpItem.Split(":")
Switch -Wildcard ($tmpItem){
"The operation completed successfully.*" {$sdclidisks += $sdcliDiskList}
"UNC Path:*" {$sdclidisks += $sdcliDiskList
$sdcliDiskList = "" | Select $fields
$sdcliDiskList.UNCPath = $tmpItemSplit[-1]}
"LUN Path:*" {$sdcliDiskList.LUNPath = $tmpItemSplit[-1]}
"Storage System:*" {$sdcliDiskList.StorageSystem = $tmpItemSplit[-1].trim()}
"Storage System Path:*" {$sdcliDiskList.StorageSystemPath = $tmpItemSplit[-1].trim()}
"Type:*" {$sdcliDiskList.Type = $tmpItemSplit[-1].trim()}
"Disk serial number:*" {$sdcliDiskList.Diskserialnumber = $tmpItemSplit[-1].trim()}
"Backed by Snapshot Copy:*" {$sdcliDiskList.BackedbySnapshotCopy = $tmpItemSplit[-1].trim()}
"Shared:*" {$sdcliDiskList.Shared = $tmpItemSplit[-1].trim()}
"BootOrSystem Disk:*" {$sdcliDiskList.BootOrSystemDisk = $tmpItemSplit[-1].trim()}
"SCSI port:*" {$sdcliDiskList.SCSIport = $tmpItemSplit[-1].trim()}
"Bus:*" {$sdcliDiskList.Bus = $tmpItemSplit[-1].trim()}
"Target:*" {$sdcliDiskList.Target = $tmpItemSplit[-1].trim()}
"LUN:*" {$sdcliDiskList.Lun = $tmpItemSplit[-1].trim()}
"Readonly:*" {$sdcliDiskList.Readonly = $tmpItemSplit[-1].trim()}
"Size:*" {$sdcliDiskList.Size = $tmpItemSplit[-1].trim()}
"Snapmirror Source:*" {$sdcliDiskList.SnapmirrorSource = $tmpItemSplit[-1].trim()}
"Snapvault Primary:*" {$sdcliDiskList.SnapvaultPrimary = $tmpItemSplit[-1].trim()}
"Disk Partition Style:*" {$sdcliDiskList.DiskPartitionStyle = $tmpItemSplit[-1].trim()}
"Clone Split Restore status:*" {$sdcliDiskList.CloneSplitRestorestatus = $tmpItemSplit[-1].trim()}
"DiskID:*" {$sdcliDiskList.DiskID = $tmpItemSplit[-1].trim()}
"Volume Name:*" {$sdcliDiskList.VolumeName = $tmpItemSplit[-1].trim()}
"*Mount points:*" {$sdcliDiskList.Mountpoints = $tmpItem.Split("`t")[-1].trim()}
"IP Addresses:*" {$sdcliDiskList.IPAddresses = $tmpItemSplit[-1].trim()}
"FC initiator WWPN:*" {$sdcliDiskList.FCinitiatorWWPN = $tmpItem.Split("`t")[-1].trim()}
}
}
$sdclidisks = $sdclidisks | where {$_.DiskID -ne $Null}
Now you have $sdclidisks you can say export to csv.
Download
Enjoy