• PowerShell Function to return Computer objects nested within a base OU

    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.

  • The First Act…

    2013-11-12 19:28:28

    [Read More...]