PowerShell Script to List AD OU and GPOs linked to them

This PowerShell script searches Active Directory for all Organizational Units (OUs) whose names contain a specified keyword and lists each matching OU along with the Group Policy Objects (GPOs) linked to it.

Example: The command below searches for all OUs with names containing “Test” and displays the details of every GPO linked to those OUs.

Usage Example:

.\Get-OUList.ps1 –OUName “Test”

#Script

[CmdletBinding()]
Param(
 [Parameter(Mandatory=$True)]
 [string]$OUName

  )

$invocation = (Get-Variable MyInvocation).Value
$directorypath = Split-Path $invocation.MyCommand.Path
$outputfile = $directorypath + "\Result.csv"
$OUName = "*" + $OUName + "*"
$Results = @()

$OUList=Get-ADOrganizationalUnit -Filter * | Where-Object -FilterScript {$PSItem.distinguishedname -like $OUName}

foreach($OU in $OUList){
 $LinkedGPOs = Get-ADOrganizationalUnit -Identity $OU | select -ExpandProperty LinkedGroupPolicyObjects 
 
 foreach($LinkedGPO in $LinkedGPOs) {            
 $GPO = [adsi]"LDAP://$LinkedGPO" | select * 
 
 $properties = @{
        OUName=$OU.DistinguishedName
        GPOName=$GPO.displayName.Value
        GPOGUID=$GPO.Guid
        GPOWhenCreated=$gpo.whenChanged.Value
        GPOWhenChanged = $gpo.whenChanged.Value
 
        }
 
 $Results += New-Object psobject -Property $properties
     }
}       
 
$Results | Select-Object OUName,GPOName,GPOGUID,GPOWhenCreated,GPOWhenChanged | Export-Csv -notypeinformation -Path $outputfile

Related Posts:

Subscribe to Techuisitive Newsletter

Be the first to know about our new blog posts. Get our newsletters directly in your inbox and stay up to date about Modern Desktop Management technologies & news.

Scroll to Top