使用 PowerShell 收集 AD 信息
admin
2023-03-13 10:41:18
0

    Collect Active Directory information by PowerShell.

    发现经常安排不过来去现场获取基础架构环境的信息,而客户的维护人员有时候又不知道要帮助收集哪些信息。用韦小宝的话说,我们要运筹什么什么之中,决胜什么什么之外。所以要看看有没有办法不用人在现场就收集一些信息。

    在写了一段用来收集Exchange架构的PowerShell之后,由于Exchange非常依赖于AD,我感觉有必要收集更多的AD的信息。所以尝试增加一些AD的脚本。通常来说,了解AD的情况,可以分为几个部分:林和域的情况,站点和子网的情况,复制的情况,域间信任以及组织单元。

  • 林和域

    收集林的情况主要需要林的名称、根域,功能级别,主机角色和包含站点等信息。

使用 PowerShell 收集 AD 信息

    收集域的情况主要需要域名,功能级别,主机角色等信息。

使用 PowerShell 收集 AD 信息

    获取五个主机角色,使用两条命令就可以。

Get-ADForest |fl RootDomain,ForestMode,DomainNamingMaster,SchemaMaster
Get-ADDomain |fl Name,DomainMode,InfrastructureMaster,RIDMaster,PDCemulator

使用 PowerShell 收集 AD 信息

    当然,每台域控制器的信息也是需要的。

使用 PowerShell 收集 AD 信息

    有点杂乱,所以只看名称、所在域、操作系统版本(也可以加上Build Number)和所在站点。

使用 PowerShell 收集 AD 信息

    当然,可以按照站点或者其他来记个数。

  • 站点和子网

    站点和子网的了解,往往是优化AD使用例如登录慢、经常出错的起点之一。而直接使用默认的Get-ADSite的命令,没有我们想要的站点和子网的关联关系。

    因此,需要一个有技巧的操作。使用Get-ADObject,直接查询需要的AD对象。

使用 PowerShell 收集 AD 信息

    举例来说,为了查看站点及关联的子网,我们可以直接从AD配置里筛选对象类型是Site的AD对象,然后查看这个对象里记录的子网信息。

   我相信任何人第一次写的时候一定有点懵,即使你是个AD的老司机。没关系,让我们掏出AD的神器ADExplorer。这是大神Mark好多年前做的工具,伴随我从青春年少,走到了油腻苍老……

使用 PowerShell 收集 AD 信息

    找到我们想要收集信息的站点,点击站点对象,就能看到,其实它包含了子网的信息,这些信息在属性siteObjectBL中,所以才可以使用特定的过滤,把这些信息从浩如烟海的AD信息中筛选出来。

    过滤器的写法,就是'objectClass –eq "site"',为了避免搜索整个AD,我们加上起始搜索位置,即'CN=Configuration,DC=contoso,DC=com'。DC的名称按照实际域名修改即可。

使用 PowerShell 收集 AD 信息

     我发现看上去结果不是很顺眼,所以改从子网来显示对应站点。这当然也没有问题。把过滤器写成'objectClass –eq "subnet"',然后收集属性 siteObject即可:

Get-ADObject -Filter 'objectClass -eq "subnet"' –SearchBase 'CN=Configuration,DC=contoso,DC=Com'  -Properties siteObject | FT Name,siteObject

使用 PowerShell 收集 AD 信息

    站点链接的话,一条简单的PowerShell就搞定了。可以用FormatList/fl 让输出看的清爽一些。

  • AD复制

Get-ADReplicationConnection

Get-ADReplicationSite

Get-ADReplicationSiteLink

Get-ADReplicationSiteLinkBridge

Get-ADReplicationSubnet

Get-ADReplicationFailure

    测试环境就一台DC,先放着吧。

  • 信任关系

Get-ADTrust

   测试环境暂时没做多域,先放着吧。

  • 组织单元

    想起十几年前,用VB脚本加上递归查询OU了……通常在初步了解AD信息时,其实很少马上收集OU、用户、组等信息,因为数量太大。如果需要收集的话,当然也不是没办法。

    先用复杂的,上ADObject,使用过滤器只显示类型是Organizational Unit的对象。于是我们得到了所有的OU的清单。

使用 PowerShell 收集 AD 信息

    相同的,直接使用简单的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的容器,简单一条命令就可以了。

使用 PowerShell 收集 AD 信息

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一致:

使用 PowerShell 收集 AD 信息

    所以,可以使用通配符来获得多个结果~

使用 PowerShell 收集 AD 信息

相关内容

热门资讯

为190元“仅退款”榴莲千里讨... 极目新闻记者 王鹏因为一笔190元的恶意“仅退款”订单,卖家自掏5000余元,驱车1600公里赴山东...
“AI智能回答”误称律师“被判... 据澎湃新闻报道,南京执业律师李小亮发现,在百度手机App、百度网站搜索其个人姓名+职务时,百度“AI...
年初铺的草皮五一咋又铲除?自然... 江西省上饶市的周先生近日向华商报大风新闻反映:今年五一假期时,他注意到上饶市广丰区北河滨路芦林街道源...
浏阳烟花厂爆炸事故4名重症患者... 截至今天(9日)上午11时,浏阳烟花厂爆炸事故在院患者42人,原5名重症患者中4人已转为轻症;在院患...
中东战火不断,为何全球股市不跌... 最近与一位美国学者交流,他讲到一个颇有意味的场景:在华尔街一场交流中,包括他在内的3位国际问题研究专...
景区回应“母亲节穿旗袍免费入园... 近日,南京天生桥景区推出的母亲节当天女士穿旗袍免费入园活动引发争议,有人认为母亲节女士穿旗袍活动,策...
一本正经胡说八道,谁为AI幻觉... AI幻觉频发,误导用户、毁损名誉的责任,该由谁来承担?南京律师李小亮在百度上搜索自己的信息,结果百度...
老人在直播间疯狂刷火箭 周佳欣、郑凯丹、朱娅、蒋婉、黄铃、王佳、李婉晴/文64岁的王雅达又往直播间里刷了一枚“火箭”。屏幕上...
汉坦病毒阳性乘客在乌斯怀亚港登... 自世卫组织(WHO)5月6日公布荷兰泛海探险公司(Oceanwide Expeditions)旗下极...
冰箱不制冷的原因有哪几种 冰箱的电压在正常的情况下,压缩机没有正常的运转,而且有噪声和旋转的声音,压缩机一旦出现故障,冰箱就会...