从 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},@{...

我遇到的问题是

  • 列表被截断,应该有比这里显示的更多的组
  • 我不需要所有这些外围信息@{Name=只需要组名
  • 我该如何排序以便群组名称和群组类型阵容?
hyk123456789 回答:从 Get-ADPrincipalGroupMembership 获取信息没有像我希望的那样工作

我不喜欢 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
本文链接:https://www.f2er.com/7627.html

大家都在问