VMware Cloud Community
wamatha
Contributor
Contributor
Jump to solution

VM's with RDM's

Greetings,

We have a number of VM with RDMs in our environment.

I am looking for a script that will generate a csv report with VM name, RDM disk size, and Device ID

Thank you

Joseph

0 Kudos
1 Solution

Accepted Solutions
vlife201110141
Enthusiast
Enthusiast
Jump to solution

####### Written by LucD only CanonicalName is changed by me #######
$report = @()
$vms = Get-VM | Get-View
foreach($vm in $vms){
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")){
            $row = "" | select VMName, VMHost, HDDeviceName, HDFileName, HDMode, HDsize, CanonicalName
            $row.VMName = $vm.Name
            $esx = Get-View $vm.Runtime.Host
            $row.VMHost = ($esx).Name
            $row.HDDeviceName = $dev.Backing.DeviceName
            $row.HDFileName = $dev.Backing.FileName
            $row.HDMode = $dev.Backing.CompatibilityMode
            $row.HDSize = $dev.CapacityInKB
            $row.CanonicalName = ($esx.Config.StorageDevice.ScsiLun | where {$_.Uuid -eq $dev.Backing.LunUuid}).CanonicalName
            $report += $row
}}}}
$report

View solution in original post

0 Kudos
5 Replies
AlbertWT
Virtuoso
Virtuoso
Jump to solution

Joseph,

Device ID, do you mean LUN ID for the RDM LUN ?

/* Please feel free to provide any comments or input you may have. */
0 Kudos
vlife201110141
Enthusiast
Enthusiast
Jump to solution

####### Written by LucD only CanonicalName is changed by me #######
$report = @()
$vms = Get-VM | Get-View
foreach($vm in $vms){
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")){
            $row = "" | select VMName, VMHost, HDDeviceName, HDFileName, HDMode, HDsize, CanonicalName
            $row.VMName = $vm.Name
            $esx = Get-View $vm.Runtime.Host
            $row.VMHost = ($esx).Name
            $row.HDDeviceName = $dev.Backing.DeviceName
            $row.HDFileName = $dev.Backing.FileName
            $row.HDMode = $dev.Backing.CompatibilityMode
            $row.HDSize = $dev.CapacityInKB
            $row.CanonicalName = ($esx.Config.StorageDevice.ScsiLun | where {$_.Uuid -eq $dev.Backing.LunUuid}).CanonicalName
            $report += $row
}}}}
$report

0 Kudos
wamatha
Contributor
Contributor
Jump to solution

EMC Device ID

0 Kudos
wamatha
Contributor
Contributor
Jump to solution

This is great, how do I export this to a CSV file?

0 Kudos
rsimonsca
Contributor
Contributor
Jump to solution

Replace the last line with:

$report | export-csv -notypeinfo -useculture c:\temp\vmrdm-report.csv

-notypeinfo:  Removes the default first line of the CSV file showing the fully qualified name of the .NET framework object

-useculture:  Uses the correct list separator for your location