IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

Dépasser les 5000 members avec Get-ADGroupMember [PowerShell]


Sujet :

Scripts/Batch

  1. #21
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 506
    Billets dans le blog
    1
    Par défaut
    2316 membres c'est sur un autre groupe. La prochaine fois j'essaierai sur le groupe de plus de 5000 user. ..quand ma réunion sera finie...

  2. #22
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 506
    Billets dans le blog
    1
    Par défaut
    Je viens seulement de faire l'essai sur le groupe de plus de 5000 users... :

    nombre de membres dans le groupe : 7431
    nombre de groupes dans le groupe : 0
    nombre d'utilisateurs dans le groupe : 3006
    nombre d'utilisateurs actif dans le groupe : 2986

  3. #23
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    ok

    donc 2986 utilisateurs actifs a transféré dans un autre groupe

    peut tu relancer cette nouvelle version du script pour confirmé que les 4425 objets manquent ne sont ni des groupes ni des utilisateurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    $ErrorActionPreference='Continue' #to display the error messages
    $text="Please enter the name of the group to be analyzed:"
    $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition #path of the folder where is located the current script
    . "$scriptPath\textbox.ps1"
    $groupsource = $objTextBox.Text #name of the source group;
    $samgrsource = ((Get-ADGroup -Filter {name -eq $groupsource} -Server "gad.schneider-electric.com").sAMAccountName)
    $members = Get-ADGroup -Identity $samgrsource  -Properties Member -Server "gad.schneider-electric.com" | Select-Object -ExpandProperty Member
    Write-Host "nombre de membres dans le groupe : $($members.count)" -ForegroundColor Yellow
    $obj = [System.Object[]]($members | foreach {
        Get-ADObject $_  -Server "gad.schneider-electric.com" | where {$_.ObjectClass -eq "group"}
        }) 
    Write-Host "nombre de groupes dans le groupe : $($obj.count)" -ForegroundColor Yellow
    $obj = [System.Object[]]($members | foreach {
        Get-ADObject $_ | where {$_.ObjectClass -eq "user"} 
        })
    Write-Host "nombre d'utilisateurs dans le groupe : $($obj.count)" -ForegroundColor Yellow
    $obj = [System.Object[]]($members | foreach {
        Get-ADObject $_ | where {$_.ObjectClass -eq "user"} | get-aduser | where {$_.Enabled -eq $True}
        })
    Write-Host "nombre d'utilisateurs actif dans le groupe : $($obj.count)" -ForegroundColor Yellow
    $obj = [System.Object[]]($members | foreach {
        Get-ADObject $_  -Server "gad.schneider-electric.com" | where {$_.ObjectClass -ne "group" -and $_.ObjectClass -ne "user"}
        }) 
    Write-Host "nombre d'objet autre que group ou user dans le groupe : $($obj.count)" -ForegroundColor Yellow
    je regarder pour la motif du script de transfert du post #10 !!

  4. #24
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    voila j'ai fais la modif avec des tests avec mon AD qui n'a pas les mêmes volume, ni organisation

    il va donc copier les 2986 utilisateurs actifs du premier groupe dans un deuxième groupe

    j'espère qu'il va fonctionné dans ton AD

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    $ErrorActionPreference = 'stop' 
    $DebugPreference = 'stop'
    $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition #path of the folder where is located the current script
     
     # textbox to select the group to be copied (the script of the textbox is common and in the file textbox.ps1)
     
    $text = "Please enter the name of the group to be copied:"
    . "$scriptPath\textbox.ps1"
    $groupsource = $objTextBox.Text #name of the source group
     
    # textbox to select the group to be feeded
     
    $text = "Please enter the name of the group to be feeded:"
    . "$scriptPath\textbox.ps1"
    $groupdest = $objTextBox.Text  #name of the destinatory GAD-SU-NextGenPDM_NonPROD
     
    #one has to use for example sAMAccountName instead of name for any AD cmdlet
    $samgrsource = ((Get-ADGroup -Filter {name -eq $groupsource} -Server "gad.schneider-electric.com").sAMAccountName)
    $samgrdest = ((Get-ADGroup -Filter {name -eq $groupdest} -Server "gad.schneider-electric.com").sAMAccountName)
    if (($samgrsource -eq $null) -OR ($samgrdest -eq $null)) { Write-Host "unknown name for source or destinatory file";return;}
    if ($samgrsource -eq $groupdest) {Write-Host "source and destinatory files are identical";return;}
    
    #To clean the group to be feeded 
    try {
        Set-ADGroup  -Identity $samgrdest -clear member -Server "gad.schneider-electric.com" 
    }
    catch {Write-Host "unknown name for destinatory group";return} 
     
    try { 
    
    $members = Get-ADGroup -Identity $samgrsource  -Properties Member -Server "gad.schneider-electric.com" | Select-Object -ExpandProperty Member
    $members | Get-ADObject -Properties sAMAccountName | where {$_.ObjectClass -eq "user"} | foreach {
        Write-Host $_.sAMAccountName"`t  " -NoNewline -ForegroundColor Green
        $u = $_ #the switch instruction generates aldo a $_ variable, so memorization
        #to do a search in the right domain, first locate in DistinguishedName what is this domain
        switch ($_.DistinguishedName) {
            {($_).contains("DC=gad,DC=schneider-electric,DC=com")} {
                $user = get-aduser -filter {sAMAccountName -like "SESA1%" -and sAMAccountName -eq $u.sAMAccountName -and Enabled -eq $True} -Server "gad.schneider-electric.com" 
                }
            {($_).contains("DC=apa,DC=gad,DC=schneider-electric,DC=com")} {
                $user = get-aduser -filter {sAMAccountName -like "SESA1%" -and sAMAccountName -eq $u.sAMAccountName -and Enabled -eq $True} -Server "apa.gad.schneider-electric.com"
                }
            {($_).contains("DC=gmea,DC=gad,DC=schneider-electric,DC=com")} {
                $user = get-aduser -filter {sAMAccountName -like "SESA1%" -and sAMAccountName -eq $u.sAMAccountName -and Enabled -eq $True} -Server "gmea.gad.schneider-electric.com"
                }
           {($_).contains("DC=eur,DC=gad,DC=schneider-electric,DC=com")} {
                $user = get-aduser -filter {sAMAccountName -like "SESA1%" -and sAMAccountName -eq $u.sAMAccountName -and Enabled -eq $True} -Server "eur.gad.schneider-electric.com"
                }
           {($_).contains("DC=nam,DC=gad,DC=schneider-electric,DC=com")} {
                $user = get-aduser -filter {sAMAccountName -like "SESA1%" -and sAMAccountName -eq $u.sAMAccountName -and Enabled -eq $True} -Server "nam.gad.schneider-electric.com"
     
                }
            }
        if ($user) {
        #if the domain has been found, some displays+add the user in the new group
            Write-Host $user.Enabled"`t  "  -NoNewline -ForegroundColor Red
            Write-Host "sAMAccountName" $user.sAMAccountName"`t  " -NoNewline -ForegroundColor White
            Write-Host ".Name" $user.Name -NoNewline -ForegroundColor Yellow
            Add-ADGroupMember -Identity $samgrdest -members $u -Server "gad.schneider-electric.com"
            }
        Write-Host ""
        }}
    catch {Write-Host "unknown name for source group"}

  5. #25
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 506
    Billets dans le blog
    1
    Par défaut
    Le script du post #23 affiche
    nombre de membres dans le groupe : 7434
    suivi d'une bordée d'injures, mais je ne peux pas faire de copier-coller car je n'ai plus la main sur PS...En gros, ce qui revient, c'est ResourceUnavailable : (CN=SESA12345, etc).

    Le script du post #24 fait plein de copies (avec à chaque fois l'affichage en vert du SESA), mais à la fin :
    unknown name for source group

  6. #26
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    salut Laurent

    voici le script qui fait les export avec les dernières corrections :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    # Get the Content of a Group and Export in CSV Format.
    # dropdown list to select the group to "populate"
    # $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition #path of the folder where is located the current script
    #. "$scriptPath\liste_der.ps1" #access to a common code
    #$param=$liste1.Text #one affects the choice in the dropdown list in the variable $param
    $param = "GAD-SU-NextGenPDM_PROD"
    $Group = ((Get-ADGroup -Filter {name -eq $param} -Server "gad.schneider-electric.com").sAMAccountName);Write-Output "7 group"=$Group
    $date = Get-Date
    $DateStr=$date.ToString("yyyyMMdd-HHmmss")
    $invocation = (Get-Variable MyInvocation).Value
    $directorypath = Split-Path $invocation.MyCommand.Path -Parent | Split-Path
    $OutputFile= $directorypath + "\output_files\" + $DateStr + $param + ".csv"
     
    function get-aduser5000 {
        param ($groupe)
     
        $members = Get-ADGroup -Identity $groupe  -Properties Member -Server "gad.schneider-electric.com" | Select-Object -ExpandProperty Member
        $members | Get-ADObject -Properties sAMAccountName | foreach {
            if ($_.ObjectClass -eq "user") {
                $u = $_ #the switch instruction generates aldo a $_ variable, so memorization
                #to do a search in the right domain, first locate in DistinguishedName what is this domain
                switch ($_.DistinguishedName) {
                    {($_).contains("DC=apa,DC=gad,DC=schneider-electric,DC=com")} {
                        $u | get-aduser -Server "apa.gad.schneider-electric.com" -Properties Name,GivenName,SurName,Employeeid,Mail,Enabled | Select Name,GivenName,SurName,Employeeid,Mail,Enabled
                        break
     
                        }
                    {($_).contains("DC=gmea,DC=gad,DC=schneider-electric,DC=com")} {
                        $u | get-aduser -Server "gmea.gad.schneider-electric.com" -Properties Name,GivenName,SurName,Employeeid,Mail,Enabled | Select Name,GivenName,SurName,Employeeid,Mail,Enabled
                        break
                        }
                   {($_).contains("DC=eur,DC=gad,DC=schneider-electric,DC=com")} {
                        $u | get-aduser -Server "eur.gad.schneider-electric.com" -Properties Name,GivenName,SurName,Employeeid,Mail,Enabled | Select Name,GivenName,SurName,Employeeid,Mail,Enabled
                        break
                        }
                   {($_).contains("DC=nam,DC=gad,DC=schneider-electric,DC=com")} {
                        $u | get-aduser -Server "nam.gad.schneider-electric.com" -Properties Name,GivenName,SurName,Employeeid,Mail,Enabled | Select Name,GivenName,SurName,Employeeid,Mail,Enabled
                        break
                        }
                    {($_).contains("DC=gad,DC=schneider-electric,DC=com")} {
                        $u | get-aduser -Server "gad.schneider-electric.com" -Properties Name,GivenName,SurName,Employeeid,Mail,Enabled | Select Name,GivenName,SurName,Employeeid,Mail,Enabled
                        break
                        }
                    }
                }
            if ($_.ObjectClass -eq "group") {
                get-aduser5000 $_.DistinguishedName 
                }
            }
        }
     
    get-aduser5000 $group |  Export-csv -path $OutputFile
     
    Write-Host `r`n "The "$param"'s group membership is now stored in :" $OutputFile"."
    #$directorypath = Split-Path $invocation.MyCommand.Path
    $invocation = (Get-Variable MyInvocation).Value
    $directorypath = Split-Path $invocation.MyCommand.Path
    Write-Host "Current path is "$directorypath

    j'ai fait une fonction récursive pour avoir l'équivalent de la ligne suivante :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    Get-ADGroupMember -Identity $Group -server gad.schneider-electric.com -recursive

  7. #27
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 506
    Billets dans le blog
    1
    Par défaut
    Salut Philippe,

    comme exécuter ton script sur le groupe de plus de 7000 users mettrait des plombes, j'ai voulu le tester sur un tout petit groupe AD (32 users)(GAD-SU-NextGenPDM_PrePROD), mais message d'erreur :
    Get-ADObject : Impossible de trouver un objet avec l’identité «
    CN=SESA283142,OU=Users,OU=SEMS,OU=Sites,OU=RU,OU=Countries,DC=gmea,DC=gad,DC=schneider-electric,DC=com» sous: «
    DC=eur,DC=gad,DC=schneider-electric,DC=com».
    At C:\Users\sesa27384\Documents\aalaurent\boulot\powershell\zip\scripts\export5000.ps1:18 char:16
    + $members | Get-ADObject -Properties sAMAccountName | foreach {
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : ObjectNotFound: (CN=SESA283142,O...electric,DC=com:ADObject) [Get-ADObject], ADIdentityNotFoundExcepti
    on
    + FullyQualifiedErrorId : Impossible de trouver un objet avec l’identité «CN=SESA283142,OU=Users,OU=SEMS,OU=Sites,OU=RU,OU=Coun
    tries,DC=gmea,DC=gad,DC=schneider-electric,DC=com» sous: «DC=eur,DC=gad,DC=schneider-electric,DC=com».,Microsoft.ActiveDirec
    tory.Management.Commands.GetADObject
    Ce message arrive 25 fois sachant qu'il y a 7 users appartenant au domaine eur.gad.schneider-electric.com comme moi et que 25+7=32...

  8. #28
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    oui je vois sur les trois dernières ligne le problème, il des users "gmea" sur le serveur DC "eur"
    je m'explique pas l'erreur puisque le switch permet justement de faire la recherche sur le bon serveur !!!

    + FullyQualifiedErrorId : Impossible de trouver un objet avec l’identité «CN=SESA283142,OU=Users,OU=SEMS,OU=Sites,OU=RU,OU=Coun
    tries,DC=gmea,DC=gad,DC=schneider-electric,DC=com» sous: «DC=eur,DC=gad,DC=schneider-electric,DC=com».,Microsoft.ActiveDirec
    tory.Management.Commands.GetADObject
    utilise tu le bon script ou me fait tu une farce ?

  9. #29
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 506
    Billets dans le blog
    1
    Par défaut
    Je pourrai vérifier le script vers 21 ou 22h (là je suis sur mon smartphone ) mais je suis presque sûr d'avoir pris le bon script et juste changé le groupe.

  10. #30
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 506
    Billets dans le blog
    1
    Par défaut
    A 22h, j'ai le même message d'erreur qu'à 15h07 sur le script
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    # Get the Content of a Group and Export in CSV Format.
    # dropdown list to select the group to "populate"
    # $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition #path of the folder where is located the current script
    #. "$scriptPath\liste_der.ps1" #access to a common code
    #$param=$liste1.Text #one affects the choice in the dropdown list in the variable $param
    $param = "GAD-SU-NextGenPDM_PrePROD"
    $Group = ((Get-ADGroup -Filter {name -eq $param} -Server "gad.schneider-electric.com").sAMAccountName);Write-Output "7 group"=$Group
    $date = Get-Date
    $DateStr=$date.ToString("yyyyMMdd-HHmmss")
    $invocation = (Get-Variable MyInvocation).Value
    $directorypath = Split-Path $invocation.MyCommand.Path -Parent | Split-Path
    $OutputFile= $directorypath + "\output_files\" + $DateStr + $param + ".csv"
     
    function get-aduser5000 {
        param ($groupe)
     
        $members = Get-ADGroup -Identity $groupe  -Properties Member -Server "gad.schneider-electric.com" | Select-Object -ExpandProperty Member
        $members | Get-ADObject -Properties sAMAccountName | foreach {
            if ($_.ObjectClass -eq "user") {
                $u = $_ #the switch instruction generates aldo a $_ variable, so memorization
                #to do a search in the right domain, first locate in DistinguishedName what is this domain
                switch ($_.DistinguishedName) {
                    {($_).contains("DC=apa,DC=gad,DC=schneider-electric,DC=com")} {
                        $u | get-aduser -Server "apa.gad.schneider-electric.com" -Properties Name,GivenName,SurName,Employeeid,Mail,Enabled | Select Name,GivenName,SurName,Employeeid,Mail,Enabled
                        break
     
                        }
                    {($_).contains("DC=gmea,DC=gad,DC=schneider-electric,DC=com")} {
                        $u | get-aduser -Server "gmea.gad.schneider-electric.com" -Properties Name,GivenName,SurName,Employeeid,Mail,Enabled | Select Name,GivenName,SurName,Employeeid,Mail,Enabled
                        break
                        }
                   {($_).contains("DC=eur,DC=gad,DC=schneider-electric,DC=com")} {
                        $u | get-aduser -Server "eur.gad.schneider-electric.com" -Properties Name,GivenName,SurName,Employeeid,Mail,Enabled | Select Name,GivenName,SurName,Employeeid,Mail,Enabled
                        break
                        }
                   {($_).contains("DC=nam,DC=gad,DC=schneider-electric,DC=com")} {
                        $u | get-aduser -Server "nam.gad.schneider-electric.com" -Properties Name,GivenName,SurName,Employeeid,Mail,Enabled | Select Name,GivenName,SurName,Employeeid,Mail,Enabled
                        break
                        }
                    {($_).contains("DC=gad,DC=schneider-electric,DC=com")} {
                        $u | get-aduser -Server "gad.schneider-electric.com" -Properties Name,GivenName,SurName,Employeeid,Mail,Enabled | Select Name,GivenName,SurName,Employeeid,Mail,Enabled
                        break
                        }
                    }
                }
            if ($_.ObjectClass -eq "group") {
                get-aduser5000 $_.DistinguishedName 
                }
            }
        }
     
    get-aduser5000 $group |  Export-csv -path $OutputFile
     
    Write-Host `r`n "The "$param"'s group membership is now stored in :" $OutputFile"."
    #$directorypath = Split-Path $invocation.MyCommand.Path
    $invocation = (Get-Variable MyInvocation).Value
    $directorypath = Split-Path $invocation.MyCommand.Path
    Write-Host "Current path is "$directorypath

  11. #31
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    aujourd'hui j'ai appris à lire et en regardent le message d'erreur, je me suis aperçue que l'erreur était sur Get-ADObject

    j'ai donc modifier le script en conséquence :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    # Get the Content of a Group and Export in CSV Format.
    # dropdown list to select the group to "populate"
    # $scriptPath = split-path -parent $MyInvocation.MyCommand.Definition #path of the folder where is located the current script
    #. "$scriptPath\liste_der.ps1" #access to a common code
    #$param=$liste1.Text #one affects the choice in the dropdown list in the variable $param
    $param = "GAD-SU-NextGenPDM_PROD"
    $Group = ((Get-ADGroup -Filter {name -eq $param} -Server "gad.schneider-electric.com").sAMAccountName);Write-Output "7 group"=$Group
    $date = Get-Date
    $DateStr=$date.ToString("yyyyMMdd-HHmmss")
    $invocation = (Get-Variable MyInvocation).Value
    $directorypath = Split-Path $invocation.MyCommand.Path -Parent | Split-Path
    $OutputFile= $directorypath + "\output_files\" + $DateStr + $param + ".csv"
     
    function get-aduser5000 {
        param ($groupe)
     
        $members = Get-ADGroup -Identity $groupe  -Properties Member -Server "gad.schneider-electric.com" | Select-Object -ExpandProperty Member
        $members | foreach {
            switch ($_) {
                {($_).contains("DC=apa,DC=gad,DC=schneider-electric,DC=com")} {
                    $ServerAD = "apa.gad.schneider-electric.com"
                    break
                    }
                {($_).contains("DC=gmea,DC=gad,DC=schneider-electric,DC=com")} {
                    $ServerAD = "gmea.gad.schneider-electric.com"
                    break
                    }
                {($_).contains("DC=eur,DC=gad,DC=schneider-electric,DC=com")} {
                    $ServerAD = "eur.gad.schneider-electric.com"
                    break
                    }
                {($_).contains("DC=nam,DC=gad,DC=schneider-electric,DC=com")} {
                    $ServerAD = "nam.gad.schneider-electric.com"
                    break
                    }
                {($_).contains("DC=gad,DC=schneider-electric,DC=com")} {
                    $ServerAD = "gad.schneider-electric.com"
                    break
                    }
                {($_).contains("DC=acces,DC=lan")} {
                    $ServerAD = "srv-ad1.acces.lan"
                    break
                    }
                default {
                    $ServerAD = "gad.schneider-electric.com"
                    break
                    }
                }
            $obj = Get-ADObject $_ -Properties sAMAccountName -Server $ServerAD
            if ($obj.ObjectClass -eq "user") {
                $obj | get-aduser -Server $ServerAD -Properties Name,GivenName,SurName,Employeeid,Mail,Enabled | Select Name,GivenName,SurName,Employeeid,Mail,Enabled
                }
            if ($obj.ObjectClass -eq "group") {
                get-aduser5000 $obj.DistinguishedName 
                }
            }
        }
     
    get-aduser5000 $group |  Export-csv -path $OutputFile
     
    Write-Host `r`n "The "$param"'s group membership is now stored in :" $OutputFile"."
    #$directorypath = Split-Path $invocation.MyCommand.Path
    $invocation = (Get-Variable MyInvocation).Value
    $directorypath = Split-Path $invocation.MyCommand.Path
    Write-Host "Current path is "$directorypath
    bon week end laurent

  12. #32
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 506
    Billets dans le blog
    1
    Par défaut
    Gros progrès car grâce à tes progrès en lecture , ça ne plante plus et génère un fichier. Mais surprise : pour le groupe de 32 users, j'obtiens un fichier csv de 2 lignes d'en-tête plus 35 lignes au lieu de 32, et pour le groupe de 7431 users, 2 lignes d'en-tête plus 7442 lignes au lieu de 7431. Comment expliques-tu ce petit dépassement ?

  13. #33
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 506
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    je viens de faire une vérif sur le groupe des 32 users : pour chaque user trouvé dans Utilisateurs et Ordinateurs AD, je l'enlève du fichier csv, et au bout du compte, c'est bon. Donc ça semble OK et donc résolu

  14. #34
    Membre chevronné
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2012
    Messages : 281
    Par défaut
    super bonne nouvelle
    on n'a une base pour les prochains scripts

  15. #35
    Membre Expert
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 506
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 506
    Billets dans le blog
    1
    Par défaut
    Merci encore. Tu m'as bien aidé et j'aurais été totalement incapable de faire ce que tu as fait

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. un outil en ligne pour faire des graphiques avec les données fournies en GET ?
    Par Invité dans le forum Général Conception Web
    Réponses: 7
    Dernier message: 26/05/2014, 09h42
  2. Réponses: 0
    Dernier message: 04/07/2012, 15h47
  3. Récupérer les données par ordre alphabétique avec GET
    Par thebarbarius dans le forum Langage
    Réponses: 4
    Dernier message: 04/03/2010, 14h42
  4. Modifier et récuperer les données avec get et set
    Par rimbaut dans le forum Langage
    Réponses: 2
    Dernier message: 14/02/2010, 16h45
  5. Réponses: 4
    Dernier message: 16/02/2003, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo