$cr = "`r`n" $tab = "`t" $daytime = Get-Date -format dd_MM_yyyy_hh_mm Write-Host $daytime $Filename = "c:\temp\DRS Rules_" + "_" + $daytime + ".txt" Write-Host $Filename Write-Host "..Connecting to Server" connect-viserver -Server "vmware.asl.local" $ClusterList = Get-Cluster | Sort Name foreach ($cluster in $ClusterList) { $clusterName = $cluster.Name $rules = get-cluster -Name $clusterName | Get-DrsRule -Type VMAntiAffinity foreach($rule in $rules){ $line = ("Cluster: " + $clusterName + $cr) $line += ("Rule: " + $rule.Name + " - AntiAffinity" + $cr) Write-Host ("Cluster: " + $clusterName) Write-Host ("Rule: " + $rule.Name + " - AntiAffinity") foreach($vmId in $rule.VMIds){ $line += ($tab + (Get-View -Id $vmId).Name + $cr) } $line | Out-File -Append $Filename Write-Host $cr } $rules = get-cluster -Name $clusterName | Get-DrsRule -Type VMAffinity foreach($rule in $rules){ $line = ("Cluster: " + $clusterName + $cr) $line += ("Rule: " + $rule.Name + " - Affinity" + $cr) Write-Host ("Cluster: " + $clusterName) Write-Host ("Rule: " + $rule.Name + " - AntiAffinity" + $cr) foreach($vmId in $rule.VMIds){ $line += ($tab + (Get-View -Id $vmId).Name + $cr) } $line | Out-File -Append $Filename Write-Host $cr } $clusterView = get-cluster -Name $clusterName | Get-View $clusterConfig = $clusterView.Configuration $clusterConfigEx = $clusterView.ConfigurationEx $clusterConfigExGroup = $clusterConfigEx.Group $rules = $clusterConfigEx.Rule foreach($rule in $rules){ if ($rule -is [VMware.Vim.ClusterVmHostRuleInfo]) { $line = $cr $line = ("Cluster: " + $clusterName + $cr) Write-Host ("Cluster: " + $clusterName) Write-Host ("Rule: " + $rule.Name + " - AntiAffinity") $line += ("Rule: " + $rule.Name + $cr) if ($rule.Mandatory) { $temp = "Must " } else { $temp = "Should " } if ($rule.AffineHostGroupName -ne $null) { $hostGroupName = $rule.AffineHostGroupName Write-Host ("Policy: " + $temp + "run on hosts in group.") $line += ("Policy: " + $temp + "run on hosts in group." + $cr) } else { $hostGroupName = $rule.AntiAffineHostGroupName Write-Host ("Policy: " + $temp + "not run on hosts in group.") $line += ("Policy: " + $temp + "not run on hosts in group." + $cr) } $vmGroupName = $rule.VmGroupName Write-Host ("VM Group: " + $vmGroupName) $line += ("VM Group: " + $vmGroupName + $cr) $vmGroupMembers = (Get-View -Property Name -Id ($clusterConfigExGroup | ?{($_ -is [VMware.Vim.ClusterVmGroup]) -and ($_.Name -eq $vmGroupName)}).Vm | %{$_.Name}) -join ($cr + $tab) $line += ($tab + $vmGroupMembers + $cr) Write-Host ("Host Group: " + $hostGroupName) $line += ("Host Group: " + $hostGroupName + $cr) $hostGroupmembers = (Get-View -Property Name -Id ($clusterConfigExGroup| ?{($_ -is [VMware.Vim.ClusterHostGroup]) -and ($_.Name -eq $hostGroupName)}).Host | %{$_.Name}) -join ($cr + $tab) $line += ($tab + $hostGroupmembers + $cr) $line | Out-File -Append $Filename Write-Host $cr } } }