Hi all
I have the script below, running against PowerShell v2.0. Unfortunately I can’t get the filtering working correctly and I’m at my limit in terms of my understanding of PowerShell. For example the DriveLetter custom property returns all the WMI members of Win32_Volume and I only want the drive letter in this particular example. Plus the same thing is happening with other WMI queries, and I really don’t know what I am doing wrong.
Thanks to all for your help in advance…
$ServerBuildresults = @()
$hosts = ‘localhost’
ForEach($h in $hosts) {
$Services = Get-WmiObject Win32_Service
$LogicalDisks = Get-WmiObject Win32_Volume -Filter “DriveType=‘3’”
$WindowsVersion = Get-WmiObject Win32_OperatingSystem | Select-Object name
$OSVersion = Get-WmiObject Win32_OperatingSystem
$Domain = Get-WmiObject Win32_ComputerSystem
$LocalGroups = Get-WmiObject win32_group -Filter “LocalAccount=‘True’”
$obj = new-object psobject
$obj | Add-Member -membertype NoteProperty -Name DriveLetter -Value (($LogicalDisks | Where-object { $.DriveLetter } ) | out-string).Trim()
$obj | Add-Member -membertype NoteProperty -Name DriveSize -Value (($LogicalDisks | Select-Object capacity | % {$.Capacity / 1GB -as [int]}) | out-string).Trim()
$obj | Add-Member -membertype NoteProperty -Name Label -Value (($LogicalDisks.Label) | out-string).Trim()
$obj | Add-Member -membertype NoteProperty -Name FileSystem -Value (($LogicalDisks.FileSystem) | out-string).Trim()
$obj | Add-Member -membertype NoteProperty -Name BlockSize -Value (($LogicalDisks.Blocksize) | out-string).Trim()
$obj | Add-Member -membertype NoteProperty -Name Monitoring.health -Value ($Services | Where-Object { $.Name -eq ‘healthservice’})
$obj | Add-Member -membertype NoteProperty -Name Monitoring.ccmexec -Value ($Services | Where-Object { $.Name -eq ‘ccmexec’ })
$obj | Add-Member -membertype NoteProperty -Name Monitoring.masvc -Value ($Services | Where-Object { $.Name -eq ‘masvc’ })
$obj | Add-Member -membertype NoteProperty -Name SQLServices -Value (($Services | Where-Object { $.StartName -notlike ‘Local’ -and $_.Name -like ‘SQL’ }) | out-string).Trim()
$obj | Add-Member -membertype NoteProperty -Name WindowsVersion -Value (($OSVersion.Caption) | out-string).Trim()
$obj | Add-Member -membertype NoteProperty -Name MemberDomain -Value (($Domain.Domain) | out-string).Trim()
$obj | Add-Member -membertype NoteProperty -Name LocalGroups.Caption -Value (($LocalGroups.Caption) | out-string).Trim()
$obj | Add-Member -membertype NoteProperty -Name LocalGroups.Name -Value (($LocalGroups.name) | out-string).Trim()
$ServerBuildresults += $obj
}
$ServerBuildresults