首页 > 解决方案 > 在格式化的 csv 中检索 SamAccountName 和关联的组

问题描述

我正在尝试检索与过滤器匹配的所有广告用户的列表,将其导入Get-ADPrincipalGroupMembership然后将结果导出到易于阅读的 CSV。

*NB 我不能使用MemberOf它,因为它对每个广告用户都返回空白,而且我发现的大多数成功的脚本都在使用MemberOf.

这是我尝试过的,它给了我一个组列表,但与谁去哪里没有关联。也尝试过,export-csv但它抱怨管道是空的?

import-module activedirectory
foreach ($user in (Get-AdUser -Filter {(Name -Like "*(s)") }  | select samaccountName)) {
    Get-ADPrincipalGroupMembership $user.samaccountName | select samaccountname,name
} 

标签: powershellactive-directory

解决方案


这将包括用户sAMAccountName在组结果中:

Import-Module ActiveDirectory
ForEach ($user in (Get-AdUser -Filter {(Name -Like "*(s)") }  | select sAMAccountName)) {
    Get-ADPrincipalGroupMembership $user.sAMAccountName| select @{Expression={$user.sAMAccountName};Label="User"},sAMAccountName,name
}

这种奇怪的表示法是用于创建自定义表。您可以在这里阅读更多相关信息:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-powershell-1.0/ee692794(v=technet.10)

看不到任何东西memberOf可能是正常的。如果您签入用户和计算机,您会在 中看到值memberOf吗?

memberOf属性将仅显示同一 AD 林中具有通用范围的组、同一域上的全局组或您正在读取的服务器的同一域上的域本地组(可能与用户不同的域)。所以它有它的局限性。

用户也可以通过属性成为组的“成员”,该primaryGroupId属性存储用户主要组的 RID(SID 的最后一部分)。这通常仅用于域用户组。

Get-ADPrincipalGroupMembership为您处理所有这些。它将包括主要组,并在您的林中的每个域中搜索以用户为成员的全局和域本地组。


推荐阅读