পাওয়ারশেল ব্যবহার করে এডি সাইট বিকল্পগুলি সনাক্ত করা


9

পাওয়ারশেলের মতো এডি সাইটের বিকল্পগুলি খুঁজতে আমি কীভাবে পাওয়ারশেল ব্যবহার করতে পারি +IS_INTER_SITE_AUTO_TOPOLOGY_DISABLED? আমি নীচের কমান্ডটি নিয়ে ঘুরে দেখছি, তবে দরকারী কিছু আউট পেতে পারছি না।

Get-ADObject -Filter 'objectClass -eq "site"' -Searchbase (Get-ADRootDSE).ConfigurationNamingContext` -Properties options

উত্তর:


17

সম্পাদনা # 3: রেফারেন্স ডকুমেন্টেশন আপডেট করা।

সম্পাদনা # 2: আরও একবার সম্পাদনা করা হচ্ছে কারণ আপনি যা করার চেষ্টা করছেন ঠিক তা করতে PS তে কিছু লিখেছিলাম। এটি নীচে।

আমি এগিয়ে যাচ্ছি এবং জোর দিয়ে যাচ্ছি যে বর্তমানে এটি করার কোনও পাওয়ারশেল ফ্রেন্ডলি (টিএম) উপায় নেই। তবে অবশ্যই আপনি যদি এখনও চান তবে এই অপশনগুলি দেখতে এলডিএপি ক্যোয়ারিকে প্রয়োজনীয় করতে পাওয়ারশেল ব্যবহার করতে পারেন। কোনও এডি সাইটের সাথে সম্পর্কিত প্রতিটি সার্ভারের অবজেক্টের optionsবৈশিষ্ট্যটি পরীক্ষা করে দেখুন NTDS Settings:

এখানে চিত্র বর্ণনা লিখুন

এটি হ'ল সঠিক গুণ, যা একটি বিটমাস্ক, যা repadmin.exe কাজ করে। Repadmin.exe এর কোডটিতে একটি বন্ধুত্বপূর্ণ বিটমাস্ক অনুবাদক রয়েছে। যেমন ADSIEdit এমএমসি স্ন্যাপ ইন। তবে আপনাকে পাওয়ারশেলের সেই বিটমাস্ক অনুবাদককে পুনরায় তৈরি করতে হবে।

উদাহরণস্বরূপ, Repadmin /options <DC> [{+|-} IS_GC]একটি বৈধ কমান্ড, এবং এখন আমরা ঠিক জানি যে এটি কোন বিটটি পরিচালনা করে।

এখানে optionsবৈশিষ্ট্যটির তুলনামূলকভাবে কৃপণ এমএসডিএন ডকুমেন্টেশন রয়েছে ।

optionsবৈশিষ্ট্যে আরও ভাল এমএসডিএন ডকুমেন্টেশন ।

বিকল্প বৈশিষ্ট্য

একটি বিটফিল্ড, যেখানে বিটের অর্থ অবজেক্টক্লাস থেকে অবজেক্ট ক্লাসে পরিবর্তিত হয়। আন্তঃ সাইট-পরিবহন, এনটিডিএস-সংযোগ, এনটিডিএস-ডিএসএ, এনটিডিএস-সাইট-সেটিংস এবং সাইট লিঙ্ক অবজেক্টে ঘটতে পারে।

এবং এখানে পুরানো-স্কুল ম্যাচিং নিয়ম অপারেটরগুলি ব্যবহার করে বিকল্পগুলির সন্ধানের একটি উদাহরণ রয়েছে:

(&(objectCategory=nTDSDSA)(options:1.2.840.113556.1.4.803:=1))

এই ফিল্টারটি LDAP_MATCHING_RULE_BIT_AND ম্যাচিং রুল অপারেটর (1.2.840.113556.1.4.803) ব্যবহার করে বিকল্পগুলির বৈশিষ্ট্যের বিটমাস্কে লো-অর্ডার বিট রয়েছে এমন এনটিডিএসডিএসএ অবজেক্টগুলি সন্ধান করতে। নিম্ন-অর্ডার বিট, যা NtdDSAPA.h এ সংজ্ঞায়িত NTDSDSA_OPT_IS_GC ধ্রুবকের সাথে সম্পর্কিত, একটি গ্লোবাল ক্যাটালগ সার্ভারের nTDSDSA অবজেক্টটি সনাক্ত করে। মিলের বিধি সম্পর্কে আরও তথ্যের জন্য, ফিল্টার সিন্ট্যাক্স অনুসন্ধান করুন।

ওহ ছেলে কি মজা করে!

বিটমাস্কের জন্য কিছু অন্যান্য মান:

এখানে চিত্র বর্ণনা লিখুন

সুতরাং এর সাথে আপনার নিজের Get-ADSiteOptionsসিএমডলেটটি রোল করার পর্যাপ্ত তথ্য থাকা উচিত ... আপনি যদি চান তবে আমি আপনার জন্য একটি লিখতে চাই, খুব বিনয়ের জন্য ...;)

সম্পাদনা: এখানে মাইক্রোসফট লিঙ্ক, হয় বিশেষজ্ঞদের জন্য Repadmin , যা মধ্যে পার্থক্য বিস্তারিত optionsএবং siteoptionsrepadmin এর subcommands:

সাইটোপশনস সাবকম্যান্ড ব্যবহার করে আমরা এনটিডিএস সাইট সেটিংস অবজেক্টে সঞ্চিত বিকল্পগুলির বৈশিষ্ট্যটি পরিবর্তন করতে পারি।

যে বিটম্যাপ হিসাবে? এটি কি নথিভুক্ত? নিশ্চিত না. যদি আপনি FORCE_KCC_WHISTLER_BEHAVIORকোনও সাক্ষাত্কারের অর্থ বলতে পারেন তবে আমি আপনাকে ঘটনাস্থলে নিয়োগ দেব। আপনি এমডিমার, এমন শো অফ। ;)

সুতরাং কেবল সংক্ষেপে, প্রতিটি ডোমেন নিয়ামকের জন্য অবজেক্টের optionsঅ্যাট্রিবিউটটি CN=NTDS Settingsডিসি-নির্দিষ্ট বিকল্পগুলির সাথে মিলিত হয়, অর্থাত্ repadmin <DC> /options, যেখানে প্রতিটি সাইটের অধীনে optionsথাকা CN=NTDS Site Settingsঅবজেক্টের বৈশিষ্ট্য repadmin /siteoptions

সুতরাং, অবশেষে আপনার প্রশ্নের উত্তর দিতে। ডিসি বিকল্প নয়, বিশেষত সাইটের বিকল্পগুলি পাওয়া:

ForEach($Site In (Get-ADObject -Filter 'objectClass -eq "site"' -Searchbase (Get-ADRootDSE).ConfigurationNamingContext)) 
{ 
    Get-ADObject "CN=NTDS Site Settings,$($Site.DistinguishedName)" -Properties Options 
}

যদি কোনও সাইট অপশন সেট না করা থাকে তবে পাওয়ারশেল সেগুলি ফিরিয়ে দেবে না। আপনি সম্ভবত উপরের কোডটি কিছুটা সহজ করতে পারেন তবে আপনি যে পার্লেন্সটি শুরু করেছিলেন তা ব্যবহার করছে। অনেক বেশি অনুসন্ধানের পরে, অবশেষে আমি সাইট বিকল্পগুলি বিটমাস্কে ডকুমেন্টেশনটি পেয়েছি :

সাইট অপশন বিটমাস্ক

তাই জন্য IS_INTER_SITE_AUTO_TOPOLOGY_DISABLEDআপনি একটি উদাহরণ হিসাবে দিয়েছেন, তোমাদের মধ্যে একটি মান খুঁজছেন করা চাই 0x00000010জন্য optionsঅ্যাট্রিবিউট।

এখানে চিত্র বর্ণনা লিখুন

এবং পাওয়ারশেল স্নিপেট চালানো থেকে:

পাওয়ারশেল সহ সাইট বিকল্পগুলি


সম্পাদনা # 2: আমি আপনাকে আজ কিছু লিখেছি:

#Require -Version 3
#Require -Module ActiveDirectory
Function Get-ADSiteOptions
{
<#
.SYNOPSIS
    This Cmdlet gets Active Directory Site Options.
.DESCRIPTION
    This Cmdlet gets Active Directory Site Options.
    We can fill out the rest of this comment-based help later.
.LINK
    http://myotherpcisacloud.com
.NOTES
    Written by Ryan Ries, October 2013. ryanries09@gmail.com.
#>
    [CmdletBinding()]
    Param()
    BEGIN
    {
        Set-StrictMode -Version Latest

        # This enum comes from NtDsAPI.h in the Windows SDK.
        # Also thanks to Jason Scott for pointing it out to me. http://serverfault.com/users/23067/jscott
        Add-Type -TypeDefinition @" 
                                   [System.Flags]
                                   public enum nTDSSiteSettingsFlags {
                                   NTDSSETTINGS_OPT_IS_AUTO_TOPOLOGY_DISABLED            = 0x00000001,
                                   NTDSSETTINGS_OPT_IS_TOPL_CLEANUP_DISABLED             = 0x00000002,
                                   NTDSSETTINGS_OPT_IS_TOPL_MIN_HOPS_DISABLED            = 0x00000004,
                                   NTDSSETTINGS_OPT_IS_TOPL_DETECT_STALE_DISABLED        = 0x00000008,
                                   NTDSSETTINGS_OPT_IS_INTER_SITE_AUTO_TOPOLOGY_DISABLED = 0x00000010,
                                   NTDSSETTINGS_OPT_IS_GROUP_CACHING_ENABLED             = 0x00000020,
                                   NTDSSETTINGS_OPT_FORCE_KCC_WHISTLER_BEHAVIOR          = 0x00000040,
                                   NTDSSETTINGS_OPT_FORCE_KCC_W2K_ELECTION               = 0x00000080,
                                   NTDSSETTINGS_OPT_IS_RAND_BH_SELECTION_DISABLED        = 0x00000100,
                                   NTDSSETTINGS_OPT_IS_SCHEDULE_HASHING_ENABLED          = 0x00000200,
                                   NTDSSETTINGS_OPT_IS_REDUNDANT_SERVER_TOPOLOGY_ENABLED = 0x00000400,
                                   NTDSSETTINGS_OPT_W2K3_IGNORE_SCHEDULES                = 0x00000800,
                                   NTDSSETTINGS_OPT_W2K3_BRIDGES_REQUIRED                = 0x00001000  }
"@
        ForEach($Site In (Get-ADObject -Filter 'objectClass -eq "site"' -Searchbase (Get-ADRootDSE).ConfigurationNamingContext)) 
        {            
            $SiteSettings = Get-ADObject "CN=NTDS Site Settings,$($Site.DistinguishedName)" -Properties Options
            If(!$SiteSettings.PSObject.Properties.Match('Options').Count -OR $SiteSettings.Options -EQ 0)
            {
                # I went with '(none)' here to give it a more classic repadmin.exe feel.
                # You could also go with $Null, or omit the property altogether for a more modern, Powershell feel.
                [PSCustomObject]@{SiteName=$Site.Name; DistinguishedName=$Site.DistinguishedName; SiteOptions='(none)'} 
            }
            Else
            {
                [PSCustomObject]@{SiteName=$Site.Name; DistinguishedName=$Site.DistinguishedName; SiteOptions=[Enum]::Parse('nTDSSiteSettingsFlags', $SiteSettings.Options)}
            }
        }
    }
}

এবং এখানে এটি কার্যকর হয়:

পান-ADSiteOptions


একটি দুর্দান্ত পোস্ট!
সাইমন ক্যাটলিন

1
হুইসলার হ'ল অপারেটিং সিস্টেমগুলির এক্সপি / 2003 যুগের কোডনাম। আমি ধরে নিয়েছি কেসিসির FORCE_KCC_WHISTLER_BEHAVIORপরবর্তী সংস্করণগুলিকে কেবল 2003-যুগের বিকল্পগুলি এবং অ্যালগরিদমগুলি ব্যবহার করতে বাধ্য করবে। আপনার পোস্টের বাকি হিসাবে, আমি তাই ভেবেছি। জানানোর জন্য ধন্যবাদ.
MDMarra

4
পুনরায়: সম্পাদনা # 2 - আপনি আমাকে বিয়ে করবেন?
MDMarra

এটি একটি তারকা অতিক্রম ব্রোমেন্স।
রায়ান রেইস

3

ডকুমেন্টেশন উল্লেখ রায়ান বাদ 2 NTDSettings সব সমন্বয় সমর্থন করার জন্য প্রয়োজনীয় বিকল্প। এই মান পাওয়া যায় নিচে দয়া করে ntdsapi.h:

Add-Type -TypeDefinition @"
    [System.Flags]
    public enum nTDSSiteSettingsFlags {
    NTDSSETTINGS_OPT_IS_AUTO_TOPOLOGY_DISABLED = 0x00000001,
    NTDSSETTINGS_OPT_IS_TOPL_CLEANUP_DISABLED = 0x00000002,
    NTDSSETTINGS_OPT_IS_TOPL_MIN_HOPS_DISABLED = 0x00000004,
    NTDSSETTINGS_OPT_IS_TOPL_DETECT_STALE_DISABLED = 0x00000008,
    NTDSSETTINGS_OPT_IS_INTER_SITE_AUTO_TOPOLOGY_DISABLED = 0x00000010,
    NTDSSETTINGS_OPT_IS_GROUP_CACHING_ENABLED = 0x00000020,
    NTDSSETTINGS_OPT_FORCE_KCC_WHISTLER_BEHAVIOR = 0x00000040,
    NTDSSETTINGS_OPT_FORCE_KCC_W2K_ELECTIONn = 0x00000080,
    NTDSSETTINGS_OPT_IS_RAND_BH_SELECTION_DISABLED = 0x00000100,
    NTDSSETTINGS_OPT_IS_SCHEDULE_HASHING_ENABLED = 0x00000200,
    NTDSSETTINGS_OPT_IS_REDUNDANT_SERVER_TOPOLOGY_ENABLED = 0x00000400,
    NTDSSETTINGS_OPT_W2K3_IGNORE_SCHEDULES = 0x00000800,
    NTDSSETTINGS_OPT_W2K3_BRIDGES_REQUIRED = 0x00001000
    }
"@

এবং

SiteOptions=[Enum]::Parse('nTDSSiteSettingsFlags', $SiteSettings.Options)

দ্বারা সরলীকৃত করা যেতে পারে

SiteOptions=[nTDSSiteSettingsFlags]$SiteSettings.Options

অতিরিক্ত তথ্যের জন্য আপনাকে ধন্যবাদ। আমি এটিকে আমার স্ক্রিপ্টে অন্তর্ভুক্ত করেছি।
রায়ান রেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.