我需要一些有关查询 GPO 的帮助。
我想知道每个 OU 总共申请了多少个 GPO。
没有参数和链接的 GPO
- 具有少于 2 个参数和少于 2 个链接的 GPO
有谁能帮我查询一下 GPO 中的详细信息吗?我们有大约 1000 多个 GPO。
问候,Karthick V
答案1
我将Powershell
为此使用一些小脚本,主要使用:
- 获取 ADOrganizationalUnit
- 获取GPO
- 获取 GPOReport
从模块:
- 活动目录
组策略
import-module ActiveDirectory import-module grouppolicy
像这样:
我想知道每个 OU 总共申请了多少个 GPO。
$OUs = Get-ADOrganizationalUnit -filter * -properties DistinguishedName,LinkedGroupPolicyObjects
foreach($OU in $OUs) {
write-host $OU.DistinguishedName : $OU.LinkedGroupPolicyObjects.count
}
没有参数和链接的 GPO
$GPOS = get-gpo -All | select-object DisplayName
foreach($GPO in $GPOS) {
$myGPO = $GPO.DisplayName
Get-GPOReport -Name "$myGPO" -ReportType Xml >tmp.xml
[xml]$xmldata = get-content "tmp.xml"
$computerLevel = $xmldata.GPO.Computer.ExtensionData | Measure-Object
$userLevel = $xmldata.GPO.User.ExtensionData | Measure-Object
$links = $xmldata.GPO.Linksto | Measure-Object
$NbreLinks = $links.count
$NbreComputerLevel = $computerLevel.Count
$NbreUserLevel = $userLevel.count
$totalParams = $NbreComputerLevel + $NbreUserLevel
if (($totalParams -eq 0) -and ($NbreLinks -eq 0)) {
write-host $myGPO
}
}
具有少于 2 个参数和少于 2 个链接的 GPO
与上面相同,但将if
语句替换为:
if(($totalParams -lt 2) -and ($NbreLinks -lt 2)) {
write-host $myGPO
}