Query GPOs by Group

This tool allows you to query Group Policy Objects in Active Directory by Restricted Group.
Search is case insensitive and supports partial match.
Once you have the GPO name, you can locate this in the GPO management snap-in and find what OUs it links to.

'; $group = urlencode($_GET['group']); $url = "http://172.17.0.1:5000/gpo?group=$group"; // query API $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_URL, $url); $response = curl_exec($ch); if ($e = curl_error($ch)) { die("Curl error: $e"); } $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if ($httpCode != 200) { die("Error: Received HTTP code $httpCode"); } curl_close($ch); $data = json_decode($response, true); $numResults = count($data); // build the group array $gpoMap = []; // will look like: [ 'GPO‑Name' => ['Administrator' => [...], 'vnc_admin' => [...]] ] if (isset($data['error'])) { echo "

Error: {$data['error']}

"; } else { foreach ($data as $row) { // safety: skip rows that do not contain the expected keys if (!isset($row['gpo'], $row['ad_group'], $row['local_group'])) { continue; } $gpoName = $row['gpo']; $adGroup = $row['ad_group']; $localGroup = strtolower($row['local_group']); // initialise if not already done if (!isset($gpoMap[$gpoName])) { $gpoMap[$gpoName] = [ 'administrators' => [], 'vnc_admin' => [] ]; } // put the ad_group into the right bucket if ($localGroup === 'administrators') { $gpoMap[$gpoName]['administrators'][] = $adGroup; } elseif ($localGroup === 'vnc_admin') { $gpoMap[$gpoName]['vnc_admin'][] = $adGroup; } } ksort($gpoMap, SORT_STRING | SORT_FLAG_CASE); if($numResults > 0){ echo 'Total results: '.$numResults.'
'; echo ' '; echo ' '; foreach ($gpoMap as $gpoName => $cols) { // Remove duplicates and build comma‑separated lists $adminGroups = implode('
', array_unique($cols['administrators'])); $vncGroups = implode('
', array_unique($cols['vnc_admin'])); $linkedOUs = implode("\n", getLinkedOUs($gpoName)); echo ' '; echo " "; echo " "; echo " "; echo ' '; } echo '
GPOAdministratorsvnc_admin
{$adminGroups}{$vncGroups}
'; } else{ echo 'No results found for query '.$_GET['group'].'.

'; } } } // if you click on a GPO name, print all OUs else if (isset($_GET['gpo'])) { echo 'OUs linked to GPO '.$_GET['gpo'].':

'; $LinkedOUs = getLinkedOUs($_GET['gpo']); echo implode("
", $LinkedOUs); echo '
Return Home'; } else { echo '

'; echo "

No group specified.

"; } echo "
"; //echo "

Source code can be found here.

"; ?>