首页 > 解决方案 > Powershell 查询以显示 AD 组或 OU 中的所有帐户

问题描述

我被要求导出我们 AD 域中所有服务帐户的详细信息。似乎直截了当,但多年来我发现并没有一致的方式来控制服务帐户。我们有一个服务帐户 OU 以及一个服务帐户 AD 安全组。有些帐户在 OU 中但不在组中,有些在组中但另一个随机 OU,有些在两者中。

我可以单独查询每一个:

团体

Get-ADGroupMember GROUP.ServiceAccounts

Get-ADUser -SearchBase "OU=Service Accounts,OU=Accounts,DC=Domain,DC=com" -filter *

如何将两者结合到一个 powershell 查询中?

标签: powershellactive-directory

解决方案


要将这些组合到一个查询中,这可能比您已经在做的效率更低,您可以执行以下操作:

$searchBase = '*OU=Service Accounts,OU=Accounts,DC=Domain,DC=com'
$groupDN = 'CN=Group Name,OU=Groups,DC=Domain,DC=com'
Get-Aduser -Filter * |
    Where-Object { $_.DistinguishedName -like $searchBase -or $_.MemberOf -contains $groupDN}

您需要$groupDN使用组的实际可分辨名称进行更新。如果您能找到一种更有效的方式-Filteron DistinguishedName,则可以使用参数使其更快-Filter


替代解决方案:

一种更有效的方法是将您的结果组合到一个对象数组中。

$array1 = Get-ADGroupMember $Group
$array2 = Get-ADUser -SearchBase "OU=Service Accounts,OU=Accounts,DC=Domain,DC=com" -filter *
$array1,$array2

推荐阅读