如何使用输入列表列出AD用户的AD组成员资格?

Mar*_*n_K 9 membership powershell active-directory

我是相当新的PS用户...寻找PowerShell脚本的一些帮助,以获取用户所属的安全组列表.

描述我需要的东西:

  • 我有许多用户的输入列表(txt文件)(samaccountnames).每个名字都在新的一行上.
  • 我需要脚本在AD中搜索这些名称 - 整个林,而不仅仅是一个域
  • 输出应该看起来像"samaccountname"和这个帐户在一行中成员的组列表,所以我可以在excel中对它进行排序

这是我的脚本:

$users = Get-Content C:\users.txt

ForEach ($User in $users) {
  $getmembership = Get-ADUser $User.Users -Properties MemberOf | Select -ExpandProperty memberof
  $getmembership | Out-File -Append c:\membership.txt 
}
Run Code Online (Sandbox Code Playgroud)

但它给我一个错误:

Get-ADUser : Cannot validate argument on parameter 'Identity'. The argument is null. Supply a non-null argument and try the command again.
At line:4 char:28
+ $getmembership = Get-ADUser <<<<  $User.Users -Properties MemberOf | Select -ExpandProperty memberof
    + CategoryInfo          : InvalidData: (:) [Get-ADUser], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.GetADUser
Run Code Online (Sandbox Code Playgroud)

无论如何,这个脚本不会搜索整个森林.

样本输入列表:

username1
username2
username3
username4... etc
Run Code Online (Sandbox Code Playgroud)

示例输出列表

username1;group1;group2;group3
username2;group1;group2;group3;group4... etc or something similar
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激.

Tre*_*van 12

第一:目前$User看来,变量没有.Users属性.在您的代码中,$User只需从文本文件中表示一行(foreach循环中的"当前"行).

$getmembership = Get-ADUser $User -Properties MemberOf | Select -ExpandProperty memberof
Run Code Online (Sandbox Code Playgroud)

其次,我不相信你可以用一个命令查询整个森林.您将不得不将其分解为更小的块:

  1. 查询林以获取域列表
  2. 调用Get-ADUser每个域(您可能必须通过-Credential参数指定备用凭据

第三,获取用户所属的组列表:

$User = Get-ADUser -Identity trevor -Properties *;
$GroupMembership = ($user.memberof | % { (Get-ADGroup $_).Name; }) -join ';';

# Result:
Orchestrator Users Group;ConfigMgr Administrators;Service Manager Admins;Domain Admins;Schema Admins
Run Code Online (Sandbox Code Playgroud)

第四:要获得最终的,所需的字符串格式,只需将$User.Name分号,$GroupMembership字符串和字符串一起添加:

$User.SamAccountName + ';' + $GroupMembership;
Run Code Online (Sandbox Code Playgroud)


小智 6

Get-ADPrincipalGroupMembership username | select name
Run Code Online (Sandbox Code Playgroud)

从另一个答案得到它,但脚本工作魔术.:)