প্রশ্ন অ্যাক্টিভ ডিরেক্টরি এ্যাট্রিবিউট দ্বারা "পরিচালিত" উপর ভিত্তি করে মেশিনগুলির গতিশীল গোষ্ঠী


কোম্পানির নীতির প্রত্যেক সার্ভার প্রশাসক নির্ধারিত প্রয়োজন। এই তথ্যটি কম্পিউটার অবজেক্টের "পরিচালিত" ক্ষেত্রের মধ্যে সংরক্ষণ করা হচ্ছে।

এটি এসএমওমে একটি গতিশীল গোষ্ঠী তৈরি করতে বেশ উপযোগী হবে যা এই এডি ফিল্ডের মাধ্যমে জনবহুল হচ্ছে। এবং সেখানে আমার সমস্যা মিথ্যা।

পদক্ষেপ আমি অনেক চেষ্টা করেছি।

1. উইন্ডোজ-কম্পিউটার টার্গেটের জন্য "পরিচালিত" একটি বৈশিষ্ট্য তৈরি করুন। এই বৈশিষ্ট্য WMI প্রশ্নের দ্বারা হচ্ছে SELECT * FROM DS_computer সম্পত্তি সঙ্গে DS_managedBy

2. একটি গতিশীল ফিল্টার সঙ্গে একটি গ্রুপ তৈরি করুন। (Object is Windows-Computer_Extended AND (Managed by Equals usr) AND True)

এখন এই তত্ত্ব যুক্তিসঙ্গত মনে হয় কিন্তু দৃশ্যত সব কাজ করে না।

এই আসলে কি সম্ভব আমি তৈরি করার চেষ্টা করছি? আমি কিভাবে এই সমস্যা মোকাবেলা করছি?


7
2018-01-23 16:40


উত্স


এটি আপনার কাছে স্ক্রিপ্ট করতে যাচ্ছেন এমন জিনিসটির মতো শোনাচ্ছে, উদাঃ, পাওয়ারসেল-এ, এবং তারপর সেই স্ক্রিপ্টটি নিয়মিত নির্ধারিত কার্য হিসাবে নিয়মিত চালান। - Ryan Ries
@ রায়ানরিস এইচএম, আমি কখনোই এরকম ভাবিনি। আমি দেখতে পাচ্ছি আমি কী করতে পারি এবং সফল হলে আমি একটি স্ক্রিপ্ট পোস্ট করব। - Fairy


উত্তর:


কিছু গবেষণা পরে আমি কেউ ইতিমধ্যে এই সমস্যা মোকাবেলা। প্রকার, রকম. আমি সংশোধন করেছি এই লিপি. লাইন শেষ দম্পতি পরিত্রাণ পেয়েছিলাম এবং আমি প্রয়োজন নীচে যুক্তি যুক্ত। এটা নোংরা কিন্তু এটি একটি কবজ মত কাজ করে। আপনাকে অবশ্যই পরিবর্তন করতে হবে পরিচালনা সার্ভার এবং অন্তর্ভুক্তি regex (আমাদের একাধিক ডোমেন রয়েছে তবে শুধুমাত্র একের জন্য এই ধরণের অটোমেশন চান)।

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

2
2018-01-30 15:00