Неопределенная ошибка - Экспорт всех групп одного пользователя в CSV

0

Вопрос

Я довольно новичок в powershell. Не уверен, что я здесь делаю не так. Попытка экспортировать все группы объявлений одного пользователя в CSV. Я знаю, что это немного сложно закодировано, но я просто пытаюсь сделать что-то простое.

Import-Module ActiveDirectory

$UserName = “pball“ 

$ReportPath = “C:\Input\EricsStuff\userADgroups.csv“

Get-ADPrincipalGroupMembership $Username | select name, groupcategory, groupscope | export-CSV C:\Input\EricsStuff\userADgroups.csv


# Export to :
# C:\Input\EricsStuff\userADgroups.csv

В частности, ошибка заключается в :

Get-ADPrincipalGroupMembership : An unspecified error has occurred
At C:\Input\EricsStuff\ExportUserGroups.ps1:7 char:1
+ Get-ADPrincipalGroupMembership $Username | select name, groupcategory ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (pball:ADPrincipal) [Get-ADPrincipalGroupMembership], ADException
    + FullyQualifiedErrorId : ActiveDirectoryServer:0,Microsoft.ActiveDirectory.Management.Commands.GetADPrincipalGroupMemb 
   ership
powershell
2021-11-23 17:28:43
1

Лучший ответ

0

Как вы, возможно, видели, в Интернете есть много сообщений, в которых упоминаются повторяющиеся проблемы с Get-ADPrincipalGroupMembership.

Если вы хотите увидеть членство пользователя, самый простой способ-посмотреть на его MemberOf Атрибут Active Directory, но так как вы хотите получить:

  • Name
  • GroupScope
  • GroupCategory

Для этого потребуется запросить каждую группу с помощью Get-ADGroup. Я могу придумать 2 альтернативы, первая из которых использует LDADFilter для поиска групп, в которых пользователь DistinguishedName является участником (другими словами, где пользователь DN является частью группы Member атрибут):

$UserName = "pball"
$ReportPath = "C:\Input\EricsStuff\userADgroups.csv"

$userDN = (Get-ADUser $UserName).DistinguishedName
Get-ADGroup -LDAPFilter "(member=$userDN)" |
Select-Object Name, GroupCategory, GroupScope |
Export-CSV $ReportPath

Проблема с этим подходом заключается в том, что вы получите только те группы, членом которых является пользователь в текущем домене. Если пользователь является членом групп, существующих в другом домене, этот код не будет отображать их.

Другой альтернативой, если вам нужно запросить все группы (в текущем домене и в других доменах), членом которых является пользователь, является перебор MemberOf собственность. Этот код был протестирован, и он работает для меня, но я не могу точно сказать, сработает ли он для вас (скорее всего, regex чтобы получить домен DistinguishedName можно улучшить, но я плохо с этим справляюсь).

$UserName = "pball"
$ReportPath = "C:\Input\EricsStuff\userADgroups.csv"

$membership = (Get-ADUser $UserName -Properties MemberOf).MemberOf
$membership | Group-Object { ($_ -split '(?=DC=)',2)[1] } | ForEach-Object {

    [adsi]$ldap = 'LDAP://{0}' -f $_.Name
    [string]$domain = $ldap.Name

    foreach($group in $_.Group)
    {
        Get-ADGroup $group -Server $domain
    }

} |
Select-Object Name, GroupCategory, GroupScope |
Export-CSV $ReportPath
2021-11-23 21:56:00

Отлично, именно то, что я ищу. Спасибо
eric webster

@ericwebster рад помочь
Santiago Squarzon

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................