Erreur non - Exportation de tous groupes de l'utilisateur à un fichier CSV

0

La question

Je suis assez nouveau à powershell. Pas sûr de ce que je fais mal ici. Essayez d'exporter la totalité d'un utilisateur de l'AD groupes CSV. Je sais que c'est un peu codé en dur, mais juste d'essayer de faire quelque chose de simple.

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

Plus précisément, l'Erreur est :

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

La meilleure réponse

0

Comme vous pouvez le voir, il y a beaucoup de posts sur internet mentionnant des problèmes récurrents avec Get-ADPrincipalGroupMembership.

Si vous voulez voir une appartenance de l'utilisateur, le moyen le plus facile est de regarder de l'utilisateur MemberOf Attribut Active Directory, mais puisque vous êtes à la recherche pour obtenir:

  • Name
  • GroupScope
  • GroupCategory

Ce serait à interroger chaque groupe à l'aide de Get-ADGroup. Il y a 2 solutions de rechange que je pense, le premier est l'aide de LDADFilter à la recherche pour les groupes dont l'utilisateur DistinguishedName est membre (en d'autres termes, lorsque l'utilisateur DN fait partie du groupe Member attribut):

$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

Le problème avec cette approche est que vous aurez seulement obtenir les groupes où l'utilisateur est un membre de la sur le Domaine actuel. Si l'utilisateur est membre de groupes qui existent dans un Domaine différent, ce code ne sera pas les afficher.

Une autre alternative si vous avez besoin d'interroger tous les groupes (sur le Domaine actuel et sur d'autres Domaines), que l'utilisateur est membre d'une boucle sur le MemberOf de la propriété. Ce code a été testé et il fonctionne pour moi, mais ne peut pas dire avec certitude si elle va travailler pour vous (le plus probable de la regex pour obtenir le Domaine de l' DistinguishedName peut être amélioré, mais je suis mauvais avec qui).

$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

Excellent, exactement ce que je cherche. Merci
eric webster

@ericwebster heureux de vous aider
Santiago Squarzon

Dans d'autres langues

Cette page est dans d'autres langues

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................