A large number of my scripts involve picking an Active Directory Organizational Unit (OU). I have been using Out-Gridview for OU navigation. This is because I was unable to find a form based GUI OU picker that worked fast enough in my very large AD environment. The scripts I have seen tended to collect all objects at once, and are very slow to load. Now that I have been working with PowerShell for nearly three years, I decided it was time to give in another try. The result of my efforts is Select-ADOU.ps1.
This PowerShell script begins by finding the AD Forest, and enumerating all domains. The user’s current domain is set as the default, and the first level of the domain is automatically expanded and put into the TreeView. This expansion of the first level is done with any domain selected. Double click on an node to expand the list of OU below the branch. The script uses the [adisiSearcher] accelerator with a OneLevel query of “(ObjectCategory=OrganizationalUnit)” — the ActiveDirectory module does not need to be loaded for it to work. When the OU is selected, the function returns an object which contains the DNS domain name, the OU Name and distinguishedname attributes. This makes it easy to use the information in subsequent code. Version 1.1 allows control of form and button text. Updated 4/16/2017 to include optional check-boxes, selection of initial domain, showing containers, and locking domain selection to single OU. Please note that some parameter names have changed so this is not a drop in replacement for the previous version.