您好,登錄后才能下訂單哦!
??? Collect Active Directory information by PowerShell.
??? 發現經常安排不過來去現場獲取基礎架構環境的信息,而客戶的維護人員有時候又不知道要幫助收集哪些信息。用韋小寶的話說,我們要運籌什么什么之中,決勝什么什么之外。所以要看看有沒有辦法不用人在現場就收集一些信息。
??? 在寫了一段用來收集Exchange架構的PowerShell之后,由于Exchange非常依賴于AD,我感覺有必要收集更多的AD的信息。所以嘗試增加一些AD的腳本。通常來說,了解AD的情況,可以分為幾個部分:林和域的情況,站點和子網的情況,復制的情況,域間信任以及組織單元。
??? 收集林的情況主要需要林的名稱、根域,功能級別,主機角色和包含站點等信息。
??? 收集域的情況主要需要域名,功能級別,主機角色等信息。
??? 獲取五個主機角色,使用兩條命令就可以。
Get-ADForest |fl RootDomain,ForestMode,DomainNamingMaster,SchemaMaster
Get-ADDomain |fl Name,DomainMode,InfrastructureMaster,RIDMaster,PDCemulator
??? 當然,每臺域控制器的信息也是需要的。
??? 有點雜亂,所以只看名稱、所在域、操作系統版本(也可以加上Build Number)和所在站點。
??? 當然,可以按照站點或者其他來記個數。
??? 站點和子網的了解,往往是優化AD使用例如登錄慢、經常出錯的起點之一。而直接使用默認的Get-ADSite的命令,沒有我們想要的站點和子網的關聯關系。
??? 因此,需要一個有技巧的操作。使用Get-ADObject,直接查詢需要的AD對象。
??? 舉例來說,為了查看站點及關聯的子網,我們可以直接從AD配置里篩選對象類型是Site的AD對象,然后查看這個對象里記錄的子網信息。
?? 我相信任何人第一次寫的時候一定有點懵,即使你是個AD的老司機。沒關系,讓我們掏出AD的神器ADExplorer。這是大神Mark好多年前做的工具,伴隨我從青春年少,走到了油膩蒼老……
??? 找到我們想要收集信息的站點,點擊站點對象,就能看到,其實它包含了子網的信息,這些信息在屬性siteObjectBL中,所以才可以使用特定的過濾,把這些信息從浩如煙海的AD信息中篩選出來。
??? 過濾器的寫法,就是'objectClass –eq "site"',為了避免搜索整個AD,我們加上起始搜索位置,即'CN=Configuration,DC=contoso,DC=com'。DC的名稱按照實際域名修改即可。
???? 我發現看上去結果不是很順眼,所以改從子網來顯示對應站點。這當然也沒有問題。把過濾器寫成'objectClass –eq "subnet"',然后收集屬性 siteObject即可:
Get-ADObject -Filter 'objectClass -eq "subnet"' –SearchBase 'CN=Configuration,DC=contoso,DC=Com'? -Properties siteObject | FT Name,siteObject
??? 站點鏈接的話,一條簡單的PowerShell就搞定了。可以用FormatList/fl 讓輸出看的清爽一些。
Get-ADReplicationConnection
Get-ADReplicationSite
Get-ADReplicationSiteLink
Get-ADReplicationSiteLinkBridge
Get-ADReplicationSubnet
Get-ADReplicationFailure
??? 測試環境就一臺DC,先放著吧。
Get-ADTrust
?? 測試環境暫時沒做多域,先放著吧。
??? 想起十幾年前,用VB腳本加上遞歸查詢OU了……通常在初步了解AD信息時,其實很少馬上收集OU、用戶、組等信息,因為數量太大。如果需要收集的話,當然也不是沒辦法。
??? 先用復雜的,上ADObject,使用過濾器只顯示類型是Organizational Unit的對象。于是我們得到了所有的OU的清單。
??? 相同的,直接使用簡單的Get-ADOrganizationalUnit,同樣可以得到一致的結果。
Get-ADObject -Filter 'objectclass -eq "organizationalunit"' –SearchBase 'DC=contoso,DC=Com' |fl DistinguishedName
Get-ADOrganizationalUnit -Filter * |fl DistinguishedName
??? 理論上AD里需要的信息,都可以通過Get-ADObject來拿到。只是需要提前想好使用怎樣的過濾器,提取怎樣的對象屬性而已。
??? 我想起以前部署System Center Configuration Manager架構的時候,需要在AD的System下確認一個容器。以前很難跟不了解AD的去描述,所以大多需要自己動手使用工具查看。現在簡單了。
??? 舉個例子,我們要確認CN=System下有沒有CN=RpcServices的容器,簡單一條命令就可以了。
Get-ADObject -Filter 'cn -eq "rpcservices"' –SearchBase 'CN=System,DC=contoso,DC=Com'
??? 如何使用Get-ADObject的進一步信息,可以參考:https://docs.microsoft.com/en-us/powershell/module/addsadministration/get-adobject
???? 對過濾器的使用語法,和PowerShell一致:
??? 所以,可以使用通配符來獲得多個結果~
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。