"관리자" Active Directory 속성을 기반으로 한 동적 시스템 그룹화

"관리자" Active Directory 속성을 기반으로 한 동적 시스템 그룹화

회사 정책에 따라 모든 서버에는 관리자가 할당되어야 합니다. 이 정보는 컴퓨터 개체의 "관리자" 필드에 저장됩니다.

이 AD 필드를 통해 채워지는 SCOM에 동적 그룹을 생성하는 것은 매우 유용합니다. 그리고 거기에 내 문제가 있습니다.

내가 지금까지 시도한 단계.

1. Windows-컴퓨터 대상에 대해 "관리자" 속성을 생성합니다. 이 속성은 WMI 쿼리에서 SELECT * FROM DS_computer속성을 사용 하여 생성됩니다 DS_managedBy.

2.동적 필터를 사용하여 그룹을 생성합니다.(Object is Windows-Computer_Extended AND (Managed by Equals usr) AND True)

이제 이것은 이론적으로는 합리적으로 보이지만 전혀 작동하지 않는 것 같습니다.

내가 만들려는 것이 실제로 가능합니까? 이 문제를 어떻게 해결하고 있나요?

답변1

약간의 조사 끝에 누군가가 이미 이 문제를 해결했다는 것을 발견했습니다. 일종의. 수정했습니다이것스크립트. 마지막 두 줄을 제거하고 아래에 필요한 논리를 추가했습니다. 지저분하지만 매력처럼 작동합니다. 변경해야 할 것은 관리 서버와 포함 정규식뿐입니다(여러 도메인이 있지만 이러한 종류의 자동화는 도메인 하나만 원합니다).

<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
    }
}

관련 정보