Question Lister utilisateurs par groupe avec des foreign security principals

Plus d'informations
il y a 3 semaines 3 jours - il y a 3 semaines 3 jours #32779 par Julien
Bonjour,

Je travail actuellement sur un script powershell permettant de lister l'ensemble des users par groupes sur plusieurs domaines. Je rencontre néanmoins un problème avec certains groupes sans que je puisse comprendre si cela a à voir avec les foreign security principals ou pas.
Sur un bon nombre de groupe, j'ai soit l'une ou l'autre des erreurs suivantes sur la commande get-aduser, qu'il y ait ou nom des foreign security principals dedans ni d'autres groupes imbriqués, du type : 

Get-ADUser : Impossible de trouver un objet avec l’identité « S-1-5-21-1343024091-1715567821-1417001333-8577 » sous : « DC=XXXX,DC=XXXX ».
At C:\Users\XXXX\Desktop\mes scripts\Users par groupe - tableau.ps1:69 char:14
+ ...        $ret=Get-ADUser -Identity $nom -properties * -server $domaine  ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (S-1-5-21-134302...1417001333-8577:ADUser) [Get-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : Impossible de trouver un objet avec l’identité «S-1-5-21-1343024091-1715567821-1417001333-8577» sous: «DC=XXXX,DC=XXXX».,Microsoft.ActiveDirectory.Management.Commands    
.GetADUser


Soit


Get-ADUser : Impossible de trouver un objet avec l’identité « CN=GRP_file_applis_specifique_bordereaux_W,OU=GROUPES,DC=XXXX,DC=XXXX » sous : « DC=XXXX,DC=XXXX ».
At C:\Users\XXXX\Desktop\mes scripts\Users par groupe - tableau.ps1:69 char:14
+ ...        $ret=Get-ADUser -Identity $nom -properties * -server $domaine  ...
+                 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (CN=GRP_file_app...,DC=XXXX:ADUser) [Get-ADUser], ADIdentityNotFoundException
    + FullyQualifiedErrorId : Impossible de trouver un objet avec l’identité «CN=GRP_file_applis_specifique_bordereaux_W,OU=GROUPES,DC=XXXX,DC=XXXX» sous: «DC=XXXX,DC=XXXX».,Microsoft.ActiveDir    
ectory.Management.Commands.GetADUser


Si quelqu'un a une idée du problème, je suis preneur.

Ci-dessous mon script : 

# définition de fonction 

function Get-AdGroupForeignMembers
{
    param(
        [string]$group
    )

    $translatedMembers = @()

    $members = (Get-ADGroup $group -Properties member).member
    foreach($m in $members)
    {
        $orphan = $false
        $name = ""
        $dn = $([adsi]$("LDAP://$m")).DistinguishedName
        $ado = Get-ADObject -Identity $($dn)
        if($ado.Name -match "^S-\d-\d-\d\d")
        {
            
            try 
            {
        
                $name =  ([System.Security.Principal.SecurityIdentifier] $ado.Name).Translate([System.Security.Principal.NTAccount])
            }
            catch 
            {
                $name = $ado.Name
                $orphan = $true
            }

        }
        else 
        {
                $name = $ado.DistinguishedName
        }

        $translatedMembers += [PSCustomObject] @{
            Name = $name
            Orphaned = $orphan
        }
    }

    Write-Output $translatedMembers
}


# Début programme

$Groups = Get-ADGroup -Filter * -SearchBase 'OU=GROUPES,DC=XXXX,DC=XXXX' -searchscope 1
$AllGroups = Get-ADGroup -Filter * -SearchBase 'OU=GROUPES,DC=XXXX,DC=XXXX' -searchscope 1
$TotalGroups = $AllGroups.Count
$i = 1 

foreach( $Group in $Groups ){
        
        Write-Progress -Activity "Traitement du groupe '$($Group.samAccountName)'" -Status "$i ème groupe sur un total de $TotalGroups groupes traités"
        Get-AdGroupForeignMembers $group | ForEach-Object { 
        
        $nom=$_.name
        $domaine="XXXX.XXXX"
        if ( $nom -like "*\*") {
            $nomseul="$nom" -split "\\"
            $nom=$nomseul[1]
            if ( $nomseul[0] -like "nom du domaine" ) { $domaine="xxxx.fr"}
            elseif ( $nomseul[0] -like "autre nom de domaine")  { $domaine="xxxx.dom" }
        }
        
        $ret=Get-ADUser -Identity $nom -properties * -server $domaine | Select-Object -Property @{Name = 'Groupe' ; Expression = {"CN=" + $Group.Name}}, @{Name = 'Class' ; Expression = {$_.objectClass}}, sn, sAMAccountName, @{Name = 'UserPrincipalName' ; Expression = {$_.userPrincipalName}}, @{Name = 'DisplayName' ; Expression = {$_.displayName}}, mail, title, @{Name = 'societe' ; Expression = {$_.company}}, @{Name = 'ville' ; Expression = {$_.l}}, objectSid, distinguishedName, @{Name = 'Prenom' ; Expression = {$_.givenName}}, @{Name = 'EmployeeNumber' ; Expression = {$_.employeeNumber}} | Export-Csv -Path \\svlxxxx\stockage\UTILISATEURS\xxxx\Userspargroupe-tableau.csv -Delimiter ";" -Append
       
    }

    $i++

}

J'ai volontairement masqué les noms de domaines et remplacé par des XXXX.

Merci d'avance,
Dernière édition: il y a 3 semaines 3 jours par Julien.

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.042 secondes
Propulsé par Kunena