因此,在活动目录中,有一个名为 WebSiteUsers 的组用于允许访问我通过 IIS 托管的文件夹。我想知道(使用 DSQuery、ADFind 或任何免费提供的工具)如何执行以下操作:
我如何查询 WebSiteUsers 的专有名称(假设它埋在 AD 中的几个 OU 深处)?
如何查询 WebSiteUsers 以生成用户列表(以人类可读的格式),以便我可以将其与另一组进行比较,以确保已添加所有需要访问此资源的人?对于此示例,假设 WebSiteUsers 已添加几千个帐户,因此目视检查不是一种选择。我更喜欢使用 excel 来比较用户列表,因此导出 CSV 或某种我可以在 excel 中操作的文本文件将是理想的选择。
答案1
要查找 DN,请运行命令dsquery group -name WebSiteUsers
如果您为 PowerShell 设置了域控制器(您应该这样做;这很棒),您可以运行该命令$WebSiteUsers = Get-ADUser -Filter {memberOf -RecursiveMatch CN=WebSiteUsers,OU=Lemings,OU=CorporateBranch,DC=example,DC=com'
并$WebSiteUsers | Export-CSV
输出到 CSV。您也可以Compare-Object
像这样使用命令:
$WebSiteUsers = Get-ADUser -Filter {memberOf -RecursiveMatch CN=WebSiteUsers,OU=Lemings,OU=CorporateBranch,DC=example,DC=com'
$OtherGroupUsers = Get-ADUser -Filter {memberOf -RecursiveMatch CN=OtherGroups,OU=Lemings,OU=CorporateBranch,DC=example,DC=com'
Compare-Object -ReferenceObject $WebSiteUsers -DifferenceObject $OtherGroupUsers -Property Name
这将剔除一个组或另一个组中遗漏的姓名列表。(-IncludeEqual
如果要查看所有人,请添加。)这将使目视检查变得更加容易:
Jim Bob =>
Suzie Q <=
Harold Johnson <=
如果要将其他组的所有成员添加到 WebSiteUsers 组:
Compare-Object $OtherGroupUsers $WebSiteUsers | Where {$_.SideIndicator -eq '=>'} | foreach{Add-ADGroupMember -Identity WebSiteUsers -Members $_}
在 Add-ADGroupMember 命令上添加 -WhatIf 可能不会有什么坏处,以仔细检查它是否会执行预期的操作。
您还可以使用 Active Directory 用户和计算机管理单元获取此列表。您需要远程医疗安装后可以从您的工作站执行此操作,否则您可以远程进入域控制器并打开它。
右键单击“已保存的查询”,然后选择“新建”、“查询”:
给它一个任意名称和简短描述,然后单击定义查询:
在Find:
选择下Custom Search
。单击字段并选择用户、成员
输入您想要包含的组的名称,然后单击“添加”:
现在您可以在 ADUC 中查看此列表。要导出它,请单击导出列表按钮。这将输出到制表符分隔的文本文件。