VMware Cloud Community
bradley4681
Expert
Expert

Get Display name of Lun in Report

I have the following report but i'd like to get the display name

$viservers = "vCenter.domain.net"
$HBAreport = @()
foreach ($singleViserver in $viservers)
{
Connect-VIServer $singleViserver -user USERNAME -password 'PASSWORD'
foreach ($VMHost in Get-VMhost) {
       foreach ($lun in ($VMHost.ExtensionData.config.storageDevice.multipathInfo.lun)){
               $Report = "" | select Name, LunID, satpPolicy, pspPolicy, Paths
               $Report.Name = $VMHost
               $Report.LunID = $lun.Id
               $Report.satpPolicy = $lun.storageArrayTypePolicy.Policy
               $Report.pspPolicy = $lun.Policy.Policy
               $Report.Paths = $lun.Path.Count
               $HBAreport += $Report
               $print = $Report
       }
       $print
}
$HBAreport | export-csv .\LUNpolicy.csv -NoTypeInformation
}

Cheers! If you found this or other information useful, please consider awarding points for "Correct" or "Helpful".
0 Kudos
4 Replies
a_p_
Leadership
Leadership

Unless LucD answers to your question directly, take a look at his posts at Re: Get HBA devices/paths list with Powercli

André

0 Kudos
bradley4681
Expert
Expert

or how can i add disk pathing policy to this script? this one actually does eveything i need except storage array policy... but the first one does that but I can't seem to get it to pull in this one.

$viservers = "vCenter.domain.net"
$HBAreport = @()
foreach ($singleViserver in $viservers)
{
Connect-VIServer $singleViserver -user USERRNAME -password 'PASSWORD'
foreach ($VMHost in Get-VMhost) {
      foreach ($lun in ($VMHost | Get-SCSIlun -CanonicalName "*naa.60*")){
                                               
            $id = $lun.CanonicalName
                                                                                                                                               
            foreach($ds in (Get-VMHost $VMHost | Get-Datastore | where{$_.Type -eq "vmfs"} | Get-View)){
                   $ds.Info.Vmfs.Extent | %{
                   if($_.DiskName -eq $id){
               
                   $Details = "" | Select Host, Datastore, CanonicalName, PSPPolicy
                   $Details.Host = $VMhost
                   $Details.Datastore = $ds.Info.Name
                   $Details.CanonicalName = $lun.CanonicalName
                   $Details.PSPPolicy = $lun.MultipathPolicy
                   $Details.PSTypeNames.Clear()
                   $Details
  $HBAreport += $Details
  }
              }
         }
    }
}
}
$HBAreport | export-csv .\LUNpolicy.csv -NoTypeInformation

Cheers! If you found this or other information useful, please consider awarding points for "Correct" or "Helpful".
0 Kudos
LucD
Leadership
Leadership

Try it like this

$viservers = "vCenter.domain.net" 
$HBAreport = @() foreach ($singleViserver in $viservers) {     Connect-VIServer $singleViserver -user USERRNAME -password 'PASSWORD'
   
foreach ($VMHost in Get-VMhost) {         foreach ($lun in ($VMHost | Get-SCSIlun -CanonicalName "*naa.60*")){             $id = $lun.CanonicalName             foreach($ds in (Get-Datastore -VMHost $VMHost | where{$_.Type -eq "vmfs"})){                 $ds.Extensiondata.Info.Vmfs.Extent | %{                     if($_.DiskName -eq $id){                         $Details = "" | Select Host, Datastore, CanonicalName, PSPPolicy, ArrayPolicy
                       
$Details.Host = $VMhost
                       
$Details.Datastore = $ds.Name                         $Details.CanonicalName = $lun.CanonicalName                         $Details.PSPPolicy = $lun.MultipathPolicy                         $Details.ArrayPolicy = ($VMHost.ExtensionData.Config.StorageDevice.MultipathInfo.Lun | where {$_.Lun -eq $lun.ExtensionData.Key}).StorageArrayTypePolicy.Policy                         $HBAreport += $Details                    }                 }             }         }     } } $HBAreport | export-csv .\LUNpolicy.csv -NoTypeInformation


Blog: lucd.info  Twitter: @LucD22  Co-author PowerCLI Reference

0 Kudos
bradley4681
Expert
Expert

So that works and I've added ArrayPolicy and Path Count. I also added a print statement so i could see if it was working as it went along. question, is this the most efficient way to code this script? it seems very slow.

$viservers = "vCenter.domain.net" 


$HBAreport = @()
foreach ($singleViserver in $viservers)
{
    Connect-VIServer $singleViserver -user USERNAME -password 'PASSWORD'    
    foreach ($VMHost in Get-VMhost) {
        foreach ($lun in ($VMHost | Get-SCSIlun -CanonicalName "*naa.60*")){

            $id = $lun.CanonicalName

            foreach($ds in (Get-Datastore -VMHost $VMHost | where{$_.Type -eq "vmfs"})){
                $ds.Extensiondata.Info.Vmfs.Extent | %{
                    if($_.DiskName -eq $id){

                        $Details = "" | Select Host, Datastore, CanonicalName, PSPPolicy, ArrayPolicy, Paths
                       
$Details.Host = $VMhost
                       
$Details.Datastore = $ds.Name                         $Details.CanonicalName = $lun.CanonicalName                         $Details.PSPPolicy = $lun.MultipathPolicy                         $Details.ArrayPolicy = ($VMHost.ExtensionData.Config.StorageDevice.MultipathInfo.Lun | where {$_.Lun -eq $lun.ExtensionData.Key}).StorageArrayTypePolicy.Policy                         $Details.Paths = ($VMHost.ExtensionData.Config.StorageDevice.MultipathInfo.Lun | where {$_.Lun -eq $lun.ExtensionData.Key}).Path.Count                         $HBAreport += $Details                         $print = $Details}                 }             }         }     $print    } } $HBAreport | export-csv .\LUNpolicy.csv -NoTypeInformation
Cheers! If you found this or other information useful, please consider awarding points for "Correct" or "Helpful".
0 Kudos