我知道有多种方式可以备份 GPO - 通过 Powershell、通过组策略管理等等,但在 Windows 中如何不仅备份 GPO 本身,还备份它们与各自 OU 的链接?使用这些工具可以实现这一点吗?还是需要像系统状态备份这样的工具才能工作?
干杯!
答案1
OU 链接存储在 AD 数据库中。因此,系统状态备份和 AD 恢复将完成这项工作。每个容器都有一个名为 gplink 的属性。因此,如果您对该属性进行 ldifde 转储,我想您可以稍后重新导入它。希望这对您有所帮助。
答案2
组策略对象的实际链接存储在组织单位、域或站点对象的 gpLink 属性中。它是一个单值字符串属性,包含所有 gpo,每个 gpo 对象都括在括号 [] 中。
gPLink 属性包含链接到容器的所有组策略容器的列表以及每个列出的组策略容器的编号,代表强制(以前称为无覆盖)和禁用选项设置。列表按优先级顺序显示,从最低优先级到最高优先级的 GPO。
如果您想手动执行此操作,您可以对具有该属性的所有对象执行全局目录查询 (gpLink=*)。如果将此与 gpmc 备份的输出相结合,您应该一切就绪了。
$searcher = New-Object system.DirectoryServices.DirectorySearcher
$searcher.SearchRoot=[adsi]"GC://dc=domainname,dc=acme,dc=com"
#$searcher.SearchScope="subtree" #if you have child domains
$searcher.PageSize=1000
$searcher=[adsisearcher]"(gpLink=*)"
$searcher.ClientTimeout=600
$ADResults = @()
$results=$searcher.FindAll()
foreach ($result in $results) {
$tempObj = New-Object psObject
$adProperties = $result.properties
foreach ($propertyName in $adProperties.propertyNames) {
if (@($adProperties.item($propertyName)).count -gt 1) {
$tempObj | Add-Member -MemberType noteproperty -Name $propertyName -Value $adProperties.item($propertyName)}
else {
$tempObj | Add-Member -MemberType noteproperty -Name $propertyName -Value ($adProperties.item($propertyName) | Out-String -Width 4096).trim()}
} # end foreach $propertyName
$ADResults += $tempObj
} # end foreach $result
$ADResults | select distinguishedName, gpLink | Out-File results.txt -Width 4096
有些链接可能非常多。如果您能在结果文件中找到 ...,则意味着您需要大于 4096 的输出缓冲区。
您可能还会发现对设置了 gpOptions 属性的对象执行查询很有用。gPOptions 属性包含“阻止策略继承”设置。它包含一个整数值,该值指示域或 OU 的“阻止策略继承”选项是启用 (0) 还是禁用 (1)。
答案3
尝试使用微软的高级组策略管理工具,如果您购买了软件保障许可证,则可以随桌面优化包免费使用该工具。
如果我没记错的话,它备份了 GPO 链接信息,还为 GPO 提供了版本控制、工作流控制和回收站。