我是相当新的PS用户...寻找PowerShell脚本的一些帮助,以获取用户所属的安全组列表。
描述我需要的东西:
这是我的脚本:
$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
}
但它给我一个错误:
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
无论如何,这个脚本不会搜索整个森林。
示例输入列表:
username1
username2
username3
username4... etc
示例输出列表
username1;group1;group2;group3
username2;group1;group2;group3;group4... etc or something similar
非常感谢任何帮助。
答案 0 :(得分:12)
首先:就目前而言,$User
变量没有.Users
属性。在您的代码中,$User
只是表示文本文件中的一行(foreach循环中的“当前”行)。
$getmembership = Get-ADUser $User -Properties MemberOf | Select -ExpandProperty memberof
其次,我不相信您可以使用一个命令查询整个林。您将不得不将其分解为更小的块:
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
第四:要获得最终的所需字符串格式,只需将$User.Name
,分号和$GroupMembership
字符串一起添加:
$User.SamAccountName + ';' + $GroupMembership;
答案 1 :(得分:7)
Get-ADPrincipalGroupMembership username | select name
从另一个答案得到它,但脚本是神奇的。 :)
答案 2 :(得分:1)
或者按字母顺序添加“排序名称”
Get-ADPrincipalGroupMembership username | select name | sort name
答案 3 :(得分:0)
以下代码将使用samaccountname返回用户名组成员身份。您可以修改它以从文件获取输入或更改查询以获取具有非过期密码等的帐户
$location = "c:\temp\Peace2.txt"
$users = (get-aduser -filter *).samaccountname
$le = $users.length
for($i = 0; $i -lt $le; $i++){
$output = (get-aduser $users[$i] | Get-ADPrincipalGroupMembership).name
$users[$i] + " " + $output
$z = $users[$i] + " " + $output
add-content $location $z
}
示例输出:
Administrator Domain Users Administrators Schema Admins Enterprise Admins Domain Admins Group Policy Creator Owners Guest Domain Guests Guests krbtgt Domain Users Denied RODC Password Replication Group Redacted Domain Users CompanyUsers Production Redacted Domain Users CompanyUsers Production Redacted Domain Users CompanyUsers Production
答案 4 :(得分:-2)
一行中的所有内容:
get-aduser -filter * -Properties memberof | select name, @{ l="GroupMembership"; e={$_.memberof -join ";" } } | export-csv membership.csv