How to get RDM list in your VMware infrastructure.
Some time we require information about our virtual machines connected to which RDM .Below are the usefull powershell script to generate a csv report .
VMName: (Display) name of the VM that has the RDM attached to it
GuestDevName: The name of the disk in the VM’s hardware configuration (e.g. “Hard disk 2”)
GuestDevID: The SCSI controller and device ID of the disk in the VM’s configuration (e.g. “scsi0:1”)
VMHost: The ESXi host that runs the VM
HDFileName: The location and name of the RDM mapping file
HDMode: whether the RDM is in virtual or physical compatibility mode
HDSize: the size of the RDM
RuntimeName: The runtime name of the host’s LUN that represents the RDM (e.g. “vmhba1:C0:T2:L61”)
CanonicalName: Its canonical name (naaid)
$vcenter = "192.168.1.1" $outputFile = "c:\PCLITEST\All-RDMs-" + (get-date -Format yyyy-MM-dd-HHmm) + ".csv" "Connecting vCenter servers ..." Connect-VIServer $vcenter -AllLinked $report = @() $luns = @{} "Getting VM(s). Be patient, this can take up to an hour ..." $vms = Get-VM | Get-View ("Got " + $vms.Count + " VMs ...") foreach($vm in $vms) { ("Processing VM " + $vm.Name + " ...") $ctl = $null $esx = $null write-host -NoNewLine " Scanning VM's devices for RDMs ..." foreach($dev in $vm.Config.Hardware.Device){ if(($dev.gettype()).Name -eq "VirtualDisk"){ if(($dev.Backing.CompatibilityMode -eq "physicalMode") -or ($dev.Backing.CompatibilityMode -eq "virtualMode")){ if ($ctl -eq $null) { " Found at least one ..." " Getting VM's SCSI controllers ..." $ctl = Get-ScsiController -VM ($vm).Name } if ($esx -eq $null) { write-host -NoNewLine " Getting VM's host ..." $esx = (Get-View $vm.Runtime.Host).Name write-host (": " + $esx) } if ($luns[$esx] -eq $null) { (" Getting SCSI LUNs of host " + $esx + " ...") $luns[$esx] = Get-ScsiLun -VmHost $esx -luntype disk } $row = "" | select VMName, GuestDevName, GuestDevID, VMHost, HDFileName, HDMode, HDsize, RuntimeName, CanonicalName $row.VMName = $vm.Name $row.GuestDevName = $dev.DeviceInfo.Label $SCSIBus = ($ctl | where {$_.ExtensionData.Key -eq $dev.ControllerKey}).ExtensionData.BusNumber $SCSIID = $dev.UnitNumber $row.GuestDevID = "scsi" + $SCSIBus + ":" + $SCSIID $row.VMHost = $esx $row.HDFileName = $dev.Backing.FileName $row.HDMode = $dev.Backing.CompatibilityMode $row.HDSize = $dev.CapacityInKB $lun = ($luns[$esx] | where {$_.ExtensionData.Uuid -eq $dev.Backing.LunUuid}) $row.CanonicalName = $lun.CanonicalName $row.RuntimeName = $lun.RuntimeName $report += $row } } } if ($ctl -eq $null) { " None found." } } "Exporting report data to $outputFile ..." $report | Export-CSV -Path $outputFile
Below are the output of file