I needed to gather the system volume sizes for all the servers on our estate as part of a scoping exercise for a Microsoft DPM project. It seemed to me that WMI was probably the answer, and a brief Bing search discovered this script.
However, I didn’t want to manually type out a text file to feed it computer names. Nor do I trust our CMDB to be up to date enough that I could use that as a reference point. Therefore, I used the best CMDB in our org, Active Directory. One brief coding scripting session resulted in the PowerShell function below, which will recurse though OU’s nested below a base OU, specified by it’s LDAP path in the initial function call and captures all discovered computer object name values to a string object. It can be easily modified to capture whatever property you are interested in, so feel free to use & abuse. Enjoy!
Function GetCompsToString
{param ($baseou)
$ou = [ADSI] “$baseou”
foreach ($child in $ou.psbase.Children )
{
if ($child.ObjectCategory -like ‘*computer*’) {$strComputer +=$child.Name}
Elseif ($child.ObjectCategory -like ‘*Organizational-Unit*’) {GetCompsToString $child.path}
}
return $strComputer
}
$input = “LDAP://OU=BaseOU,DC=DOMAIN,DC=LOCAL”
$output = GetCompsToString $input
Thanks to Joachimm Naslander (http://social.technet.microsoft.com/Forums/en/winserverManagement/thread/a0cebabf-3fc9-49b0-be55-5e4ff3232b7b) for the core method I used.
NOTE!: I aim to use some more easily parsed way to publish code, so this will be retroactively enhanced.
Leave a Reply