基于“由Active Directory属性pipe理”的机器dynamic分组

公司政策要求每个服务器都有一个pipe理员分配。 此信息正被保存在“计算机对象”的“由…pipe理”字段中。

在通过AD域填充的SCOM中创build一个dynamic组是非常有用的。 我的问题在于此。

我已经尝试了很多步骤。

1.为Windows-Computer目标创build一个“由…pipe理”的属性。 该属性由具有SELECT * FROM DS_computer属性的WMI查询SELECT * FROM DS_computer DS_managedBy

2.用dynamicfilter创build一个组。 (Object is Windows-Computer_Extended AND (Managed by Equals usr) AND True)

现在这在理论上似乎是合理的,但显然根本不起作用。

这实际上是可能的,我想创build? 我如何解决这个问题?

经过一番调查,我发现有人已经解决了这个问题。 有点。 我修改了这个脚本。 摆脱了最后几行,并添加了我需要的逻辑。 这是杂乱的,但它像一个魅力。 所有你需要改变的是pipe理服务器和包含正则expression式(我们有多个域,但只需要这种自动化)。

 <Functions from original script go here> $ManagementServer = "<ManagementServerGoesHere>" $ManagementGroup = GetSCOMManagementGroup -ms $ManagementServer $Groups = Get-SCOMGroup -DisplayName "Managed-By *" $Groups |% { $Group = $_ $Group.DisplayName -match "Managed-By (\w{3})" | Out-Null $sAMAccountName = $Matches[1] $User = Get-ADUser -Filter {sAMAccountName -eq $sAMAccountName} $UserDN = $User.DistinguishedName $ADManagedByComputers = Get-ADComputer -Filter {ManagedBy -eq $UserDN} $SCOMManagedByComputer = Get-SCOMGroup $Group.id | Get-SCOMClassInstance [string]$InstancesToAdd = "" [string]$InstancesToRemove = "" $ADManagedByComputers | % { if($SCOMManagedByComputer.DisplayName -notcontains $_.DNSHostName) { $Agent = Get-SCOMAgent -DNSHostName $_.DNSHostName if($Agent) { Write-Host ($_.DNSHostName + " not in SCOM Group " + $Group.DisplayName) -ForegroundColor Yellow $InstancesToAdd = $InstancesToAdd + "," + $Agent.Id } else { Write-Host ($_.DNSHostName + " has no Agent installed!") -ForegroundColor Gray } } else { Write-Host ($_.DNSHostname + " already in SCOM Group " + $Group.DisplayName) -ForegroundColor Green } } $SCOMManagedByComputer | % { if($_.DisplayName -match "<InclusionRegex>") { if($ADManagedByComputers.DNSHostName -notcontains $_.DisplayName) { Write-Host ($_.DisplayName + " should not be in SCOM Group " + $Group.DisplayName) -ForegroundColor DarkYellow $Agent = Get-SCOMAgent -DNSHostName $_.DisplayName if($Agent) { $InstancesToRemove = $InstancesToRemove + "," + $Agent.Id } } } else { Write-Host ($_.DisplayName + " is not in the domain scope. Skipping.") -ForegroundColor Cyan } } $InstancesToAdd = $InstancesToAdd.Trim(",") $InstancesToRemove = $InstancesToRemove.Trim(",") $ManagementPackName = ($Group | Get-SCOMClass).ManagementPackName $ManagementPackID = (Get-SCManagementPack -Name $ManagementPackName) $MP = ValidateGroup -mg $ManagementGroup -mp $MP -groupID $Group.FullName If($InstancesToAdd -ne "" -and $InstancesToRemove -ne "") { $MP = UpdateGroup -mg $ManagementGroup -mp $ManagementPackID -groupID $Group.FullName -instancesToAdd $InstancesToAdd -instancesToRemove $InstancesToRemove } if($InstancesToAdd -ne "" -and $InstancesToRemove -eq "") { $MP = UpdateGroup -mg $ManagementGroup -mp $MP -groupID $Group.FullName -instancesToAdd $InstancesToAdd } if($InstancesToAdd -eq "" -and $InstancesToRemove -ne "") { $MP = UpdateGroup -mg $ManagementGroup -mp $MP -groupID $Group.FullName -instancesToRemove $InstancesToRemove } }