$VCenters = Get-Content VCenterServers.txt
$Cred = Get-Credential -UserName mjclark_a@computacenter.com -Message 'Enter Password for vCenter Servers'
foreach ($VC in $VCenters) {
Write-Host 'Connecting to Vcenter Server '$VC -ForegroundColor Green
Connect-VIServer -Server $VC -Credential $Cred
foreach ($dc in Get-Datacenter) {
foreach ($cluster in Get-Cluster -Location $dc) {
foreach ($esx in Get-VMHost -Location $cluster) {
foreach ($rdm in Get-VM -Location $esx | Get-HardDisk -DiskType RawPhysical, RawVirtual) {
$esxcli = Get-EsxCli -VMHost $esx -V2
$esxcli.storage.core.device.list.Invoke(@{device = "$($rdm.ScsiCanonicalName)" }) |
Select-Object @{N = 'Datacenter'; E = { $dc.Name } },
@{N = 'Cluster'; E = { $cluster.Name } },
@{N = 'VMHost'; E = { $esx.Name } },
@{N = 'VM'; E = { $vm.Name } },
@{N = 'HardDisk'; E = { $rdm.Name } },
@{N = 'CanonicalName'; E = { $rdm.ScsiCanonicalName } },
@{N = 'LUN'; E = { ($esxcli.storage.core.path.list.Invoke(@{device = $rdm.ScsiCanonicalName })).RuntimeName.Split('L')[1] } },
@{N = 'PereniallyReserved'; E = { $_.IsPerenniallyReserved } }
}
}
}
Write-Host 'Disconnecting from vCenter Server '$VC -ForegroundColor Cyan
Disconnect-VIServer $VC -confirm:$false
}