$report = foreach($cluster in Get-Cluster){
foreach($esx in Get-VMHost -Location $cluster){
foreach($vm in Get-VM -Location $esx){
$obj = New-Object PSObject -Property @{
Cluster = $cluster.Name
VMHost = $esx.Name
VM = $vm.Name
PowerState = $vm.PowerState
GuestOS = $vm.Guest.OSFullName
TagCat1 = ''
TagCat2 = ''
TagCat3 = ''
TagCat4 = ''
TagCat5 = ''
TagCat6 = ''
}
if($cat = Get-TagCategory -Name "Cat1" -ErrorAction SilentlyContinue){
$obj.TagCat1 = (Get-TagAssignment -Entity $vm -Category $cat).Tag.Name -join '|'
}
if($cat = Get-TagCategory -Name "Cat2" -ErrorAction SilentlyContinue){
$obj.TagCat2 = (Get-TagAssignment -Entity $vm -Category $cat).Tag.Name -join '|'
}
if($cat = Get-TagCategory -Name "Cat3" -ErrorAction SilentlyContinue){
$obj.TagCat3 = (Get-TagAssignment -Entity $vm -Category $cat).Tag.Name -join '|'
}
if($cat = Get-TagCategory -Name "Cat4" -ErrorAction SilentlyContinue){
$obj.TagCat4 = (Get-TagAssignment -Entity $vm -Category $cat).Tag.Name -join '|'
}
if($cat = Get-TagCategory -Name "Cat5" -ErrorAction SilentlyContinue){
$obj.TagCat5 = (Get-TagAssignment -Entity $vm -Category $cat).Tag.Name -join '|'
}
if($cat = Get-TagCategory -Name "Cat6" -ErrorAction SilentlyContinue){
$obj.TagCat6 = (Get-TagAssignment -Entity $vm -Category $cat).Tag.Name -join '|'
}
$obj
}
}
}
$report |
Select Cluster,VMHost,VM,PowerState,GuestOS,TagCat1,TagCat2,TagCat3,TagCat4,TagCat5,TagCat6 |
Export-Csv -Path .\report.csv -NoTypeInformation -UseCulture