如何解决从 Get-ADPrincipalGroupMembership 获取信息没有像我希望的那样工作
我有一个用户列表,我需要知道他们的 Active Directory 组成员身份是什么。我需要他们在一个 csv 中使用用户名、组名和组类型(分发安全性)将它们组合在一起,但我运气不佳。下面是我尝试编写和使用的 Powershell 脚本。
$Users = Get-Content -Path 'C:\Scripts\Lists\Userdistro.txt'
Foreach ($user in $users) {
$GroupName = Get-ADPrincipalGroupMembership $user | Select-Object -Property Name
$GroupType = Get-ADPrincipalGroupMembership $user | Select-Object -Property GroupCategory
$Results = @{'Username'=$User;'Group'=$GroupType}
$obj = New-Object -TypeName PSObject -Property $Results
Write-Output $Obj | Format-table -AutoSize
我得到的输出是这样的:
Username Group GroupType
-------- ----- ---------
psmith {@{Name=Domain Users},@{Name=Group1},@{Name=Group2},@{Name=Group3:}...} {@{GroupCategory=Security},@{GroupCategory=Security},@{...
我遇到的问题是
解决方法
我不喜欢 Get-ADPrincipalGroupMembership
所以,这是我个人会使用的:
$Users = Get-Content -Path 'C:\Scripts\Lists\UserDistro.txt'
$result = foreach($user in $users)
{
$adUsr = Get-ADUser $user
$membership = Get-ADGroup -LDAPFilter "(member=$($user.DistinguishedName))"
foreach($group in $membership)
{
[pscustomobject]@{
User = $adUsr.samAccountName
GroupName = $group.Name
GroupType = $group.GroupCategory
}
}
}
$result | Format-Table -AutoSize
使用 Get-ADPrincipalGroupMembership
看起来像这样:
$Users = Get-Content -Path 'C:\Scripts\Lists\UserDistro.txt'
$result = foreach($user in $users)
{
$membership = Get-ADPrincipalGroupMembership $user
foreach($group in $membership)
{
[pscustomobject]@{
User = $user
GroupName = $group.Name
GroupType = $group.GroupCategory
}
}
}
$result | Format-Table -AutoSize
或使用Select-Object
:
$Users = Get-Content -Path 'C:\Scripts\Lists\UserDistro.txt'
$result = foreach($user in $users)
{
Get-ADPrincipalGroupMembership $user |
Select-Object @{n='User';e={$user}},@{n='GroupName';e={$_.Name}},@{n='GroupType';e={$_.GroupCategory}}
}
$result | Format-Table -AutoSize
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。