############################## # Script created by Hugo Peeters # # http://www.peetersonline.nl # ############################## # Variables $VCServerName = "MYVCSERVER" $CustomFieldName = "LUNs" $ManagedObjectType = "HostSystem" # Script $VC = Connect-VIServer $VCServerName $SI = Get-View ServiceInstance $CFM = Get-View $SI.Content.CustomFieldsManager $myCustomField = $CFM.Field | Where {$_.Name -eq $CustomFieldName} If (!$myCustomField) { # Create Custom Field $FieldCopy = $CFM.Field[0] $CFM.AddCustomFieldDef($CustomFieldName,$ManagedObjectType,$FieldCopy.FieldDefPrivileges,$FieldCopy.FieldInstancePrivileges) } # Fill Custom Fields $VMHosts = Get-VMHost $VMHostViews = $VMHosts | Get-View ForEach ($VMHostView in $VMHostViews) { $LUNCount = ($VMHostView.Config.FileSystemVolume.MountInfo | Measure-Object).Count # Compare value to current value If ($LUNCount -ne ($VMView.CustomValue | ?{$_.Key -eq $myCustomField.Key}).Value) { # Set Custom Value $VMHostView.setCustomValue($CustomFieldName,$LUNCount) } } Disconnect-VIServer -Confirm:$False