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.
Enjoy