Question
AD OU Keep tree order
- Dela
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 47
- Remerciements reçus 0
il y a 11 ans 5 mois #18542
par Dela
AD OU Keep tree order a été créé par Dela
Bonjour à toutes et tous, je débute en powershell.
Je viens d'avoir une formation et il me manque donc qqes automatismes. je scriptai déjà avec d'autres langages j'ai donc qqes notions !
je vous expose mon probleme !!
j'ai un AD avec un arbre d'unité d'organisation.
j'ai besoin de checker dans chaques OU le nombre de compte, activés, desactivés, et non spécifiés.
non spécifié car on a une synchro d'un ldap linux vers AD ( question de ressource humaine ) qui ne permet pas de renseigner ce champ.
le probleme n'est pas là !!! je n'arrive pas dans mes Export CSV à conserver la structure de mon AD !! j'ai bien tous les résultats que je recherche mais ils s'affichent tous dans un ordre aléatoire !
comment conserver la structure de mon AD dans mon export CSV !??? je ne trouve pas !!
Voici mon script :
[code:1]########################################
[array]$table = @()
Get-ADOrganizationalUnit -filter * -SearchBase \"OU=Utilisateurs_Groupes;OU=MONAD,dc=MONDOMAINE,dc=COM\" -SearchScope 2 | ? {$_.name -ne 'Utilisateurs' -and $_.name -ne 'Groupes'} |
Foreach{
[string]$Name = $_.Name
write-Host \"Nom : \"$name $_.distinguishedname
$obj = New-Object PSObject #objet PS contenant les résultats des requetes
$obj | Add-Member Noteproperty \"Name\" $Name
$u=Get-ADUser -filter * -searchbase $_.distinguishedname -ResultPageSize 5000 -resultSetSize 5000
$total=($u | measure-object).count
$obj | Add-Member Noteproperty \"TotalUsers\" $Total
$enabled=($u | where {$_.Enabled -eq $true} | Measure-Object).count
$obj | Add-Member Noteproperty \"Enabled\" $Enabled
$Disabled=($u | where {$_.Enabled -eq $false} | Measure-Object).count
$obj | Add-Member Noteproperty \"Disabled\" $Disabled
$NotSpec=$total-$enabled-$disabled
$obj | Add-Member Noteproperty \"NotSpec\" $NotSpec
$table+=$obj
}
$Table | Export-csv c:\temp\test.csv
######################################################[/code:1]
Le script fonctionne parfaitement ( le petit write-host au debut du FOREACH est volontaire pour controler en live ce qu'il se passe ) !!
Donc dans AD j'ai
A
A1
A2
B
B1
B2
C
C1
C2
je souhaiterai avoir dans mon csv cette structure et non pas
A2
C2
A
C1
C
B2
B1
A1
MERCI A TOUS DE PRENDRE LE TPS JUSTE DE ME LIRE ;o) C'est déjà enorme !<br><br>Message édité par: Alexis, à: 8/12/14 10:51
Je viens d'avoir une formation et il me manque donc qqes automatismes. je scriptai déjà avec d'autres langages j'ai donc qqes notions !
je vous expose mon probleme !!
j'ai un AD avec un arbre d'unité d'organisation.
j'ai besoin de checker dans chaques OU le nombre de compte, activés, desactivés, et non spécifiés.
non spécifié car on a une synchro d'un ldap linux vers AD ( question de ressource humaine ) qui ne permet pas de renseigner ce champ.
le probleme n'est pas là !!! je n'arrive pas dans mes Export CSV à conserver la structure de mon AD !! j'ai bien tous les résultats que je recherche mais ils s'affichent tous dans un ordre aléatoire !
comment conserver la structure de mon AD dans mon export CSV !??? je ne trouve pas !!
Voici mon script :
[code:1]########################################
[array]$table = @()
Get-ADOrganizationalUnit -filter * -SearchBase \"OU=Utilisateurs_Groupes;OU=MONAD,dc=MONDOMAINE,dc=COM\" -SearchScope 2 | ? {$_.name -ne 'Utilisateurs' -and $_.name -ne 'Groupes'} |
Foreach{
[string]$Name = $_.Name
write-Host \"Nom : \"$name $_.distinguishedname
$obj = New-Object PSObject #objet PS contenant les résultats des requetes
$obj | Add-Member Noteproperty \"Name\" $Name
$u=Get-ADUser -filter * -searchbase $_.distinguishedname -ResultPageSize 5000 -resultSetSize 5000
$total=($u | measure-object).count
$obj | Add-Member Noteproperty \"TotalUsers\" $Total
$enabled=($u | where {$_.Enabled -eq $true} | Measure-Object).count
$obj | Add-Member Noteproperty \"Enabled\" $Enabled
$Disabled=($u | where {$_.Enabled -eq $false} | Measure-Object).count
$obj | Add-Member Noteproperty \"Disabled\" $Disabled
$NotSpec=$total-$enabled-$disabled
$obj | Add-Member Noteproperty \"NotSpec\" $NotSpec
$table+=$obj
}
$Table | Export-csv c:\temp\test.csv
######################################################[/code:1]
Le script fonctionne parfaitement ( le petit write-host au debut du FOREACH est volontaire pour controler en live ce qu'il se passe ) !!
Donc dans AD j'ai
A
A1
A2
B
B1
B2
C
C1
C2
je souhaiterai avoir dans mon csv cette structure et non pas
A2
C2
A
C1
C
B2
B1
A1
MERCI A TOUS DE PRENDRE LE TPS JUSTE DE ME LIRE ;o) C'est déjà enorme !<br><br>Message édité par: Alexis, à: 8/12/14 10:51
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 11 ans 5 mois #18543
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:AD OU Keep tree order
Je ne connais pas la manière dont ces cmdlets AD lisent 'l'arbre', peut-être te faut-il trier ton résultat avant de l'enregistrer, voir de trier les noms d'OU avant de les traiter ?
Par exemple, la lecture d'une arborescence disque est trié par défaut :
[code:1]dir -rec|select fullname[/code:1]
Par exemple, la lecture d'une arborescence disque est trié par défaut :
[code:1]dir -rec|select fullname[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Dela
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 47
- Remerciements reçus 0
il y a 11 ans 5 mois #18550
par Dela
Réponse de Dela sur le sujet Re:AD OU Keep tree order
Cette commande ne m'aide malheureusement pas !!
j'ai bien regardé , j'ai compris ce qu'il se passe ! j'aimerai trouver une commande qui m'evite de refaire tout mon script !
j'ai regardé les exports !!
en passant le filtre LDAP à -SEARCHLEVEL 1 ( OneLevel )
On respecte bien mon arbre !! Quand je ne regarde pas les sous repertoires ( sous OUs ) Je conserve bien dans mon CSV la structure de mon AD...
A
B
C
le probleme est le -SEARCHLEVEL 2
pour chaque OU ou il y a un SUBDIRECTORY il se met à passer les FOREACH de ses OUs avant d'avoir finit le traitement de l'arborescence de base !!
je ne suis pas tres claire mais au lieu de faire L'arborescence premier niveau et ensuite pour chacune d'entre elle faire un foreach, il fait des foreach pour chaque niveau dès qu'il les decouvre :$
NEED Une formation ITIL rapidement !
j'ai bien regardé , j'ai compris ce qu'il se passe ! j'aimerai trouver une commande qui m'evite de refaire tout mon script !
j'ai regardé les exports !!
en passant le filtre LDAP à -SEARCHLEVEL 1 ( OneLevel )
On respecte bien mon arbre !! Quand je ne regarde pas les sous repertoires ( sous OUs ) Je conserve bien dans mon CSV la structure de mon AD...
A
B
C
le probleme est le -SEARCHLEVEL 2
pour chaque OU ou il y a un SUBDIRECTORY il se met à passer les FOREACH de ses OUs avant d'avoir finit le traitement de l'arborescence de base !!
je ne suis pas tres claire mais au lieu de faire L'arborescence premier niveau et ensuite pour chacune d'entre elle faire un foreach, il fait des foreach pour chaque niveau dès qu'il les decouvre :$
NEED Une formation ITIL rapidement !
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 11 ans 5 mois #18552
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:AD OU Keep tree order
Alexis écrit:
Dans ce cas essaie de mémoriser le chemin LDAP dans ton objet puis de trier sur cette propriété.il fait des foreach pour chaque niveau dès qu'il les decouvre
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Dela
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 47
- Remerciements reçus 0
il y a 11 ans 5 mois #18554
par Dela
Réponse de Dela sur le sujet Re:AD OU Keep tree order
C'est un peu ce que jetais en trian de faire !!!
Mon resultat est bien comme ca !! j'ai fait un tableau avec mon searchlevel 1 et pour chaque element de mon tableau je refais un foreach..
j'ai un beau CSV dans l'ordre !!!
IL NE ME RESTE PLUS QUUNE CHOSE A VOIR !! je voudrais dans mon tableau Avoir un Saut de ligne ou espacer d'une colonne pour differencier ceux du searchlevel 1 de ceux du searchlevel 2 !!
[code:1][array]$table = @()
$Ou1LVL = Get-ADOrganizationalUnit -filter * -SearchBase \"OU=Utilisateurs_Groupes;OU=MONAD,dc=MONDOMAIN,dc=com\" -SearchScope 1 | ? {$_.name -ne 'Utilisateurs' -and $_.name -ne 'Groupes'} |
Foreach {
Get-ADOrganizationalUnit -filter * -SearchBase $_.distinguishedname -SearchScope 2 | ? {$_.name -ne 'Utilisateurs' -and $_.name -ne 'Groupes'}
$obj | Add-Member Noteproperty \"BASE AD\" \"Lvl1\"
} |
foreach {
[string]$Name = $_.Name
write-Host \"Nom : \"$name $_.distinguishedname
$obj = New-Object PSObject #objet PS contenant les résultats des requetes
$obj | Add-Member Noteproperty \"Name\" $Name
$u=Get-ADUser -filter * -searchbase $_.distinguishedname -ResultPageSize 5000 -resultSetSize 5000
$total=($u | measure-object).count
$obj | Add-Member Noteproperty \"TotalUsers\" $Total
$enabled=($u | where {$_.Enabled -eq $true} | Measure-Object).count
$obj | Add-Member Noteproperty \"Enabled\" $Enabled
$Disabled=($u | where {$_.Enabled -eq $false} | Measure-Object).count
$obj | Add-Member Noteproperty \"Disabled\" $Disabled
$NotSpec=$total-$enabled-$disabled
$obj | Add-Member Noteproperty \"NotSpec\" $NotSpec
$table+=$obj
}
$Table | Export-csv c:\temp\test.csv
[/code:1]
J'y suis presque !!!!
Mon resultat est bien comme ca !! j'ai fait un tableau avec mon searchlevel 1 et pour chaque element de mon tableau je refais un foreach..
j'ai un beau CSV dans l'ordre !!!
IL NE ME RESTE PLUS QUUNE CHOSE A VOIR !! je voudrais dans mon tableau Avoir un Saut de ligne ou espacer d'une colonne pour differencier ceux du searchlevel 1 de ceux du searchlevel 2 !!
[code:1][array]$table = @()
$Ou1LVL = Get-ADOrganizationalUnit -filter * -SearchBase \"OU=Utilisateurs_Groupes;OU=MONAD,dc=MONDOMAIN,dc=com\" -SearchScope 1 | ? {$_.name -ne 'Utilisateurs' -and $_.name -ne 'Groupes'} |
Foreach {
Get-ADOrganizationalUnit -filter * -SearchBase $_.distinguishedname -SearchScope 2 | ? {$_.name -ne 'Utilisateurs' -and $_.name -ne 'Groupes'}
$obj | Add-Member Noteproperty \"BASE AD\" \"Lvl1\"
} |
foreach {
[string]$Name = $_.Name
write-Host \"Nom : \"$name $_.distinguishedname
$obj = New-Object PSObject #objet PS contenant les résultats des requetes
$obj | Add-Member Noteproperty \"Name\" $Name
$u=Get-ADUser -filter * -searchbase $_.distinguishedname -ResultPageSize 5000 -resultSetSize 5000
$total=($u | measure-object).count
$obj | Add-Member Noteproperty \"TotalUsers\" $Total
$enabled=($u | where {$_.Enabled -eq $true} | Measure-Object).count
$obj | Add-Member Noteproperty \"Enabled\" $Enabled
$Disabled=($u | where {$_.Enabled -eq $false} | Measure-Object).count
$obj | Add-Member Noteproperty \"Disabled\" $Disabled
$NotSpec=$total-$enabled-$disabled
$obj | Add-Member Noteproperty \"NotSpec\" $NotSpec
$table+=$obj
}
$Table | Export-csv c:\temp\test.csv
[/code:1]
J'y suis presque !!!!
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 11 ans 5 mois #18555
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:AD OU Keep tree order
Alexis écrit:
Attention, tu crées l'objet dans la seconde itération.
Alexis écrit:
Ajoute une propriété Level, ensuite c'est à l'outil de présentation de le gérer ( XL ou une fonction PS de formatage, txt, HTML, etc)
C'est effectivement une autre solution.j'ai fait un tableau avec mon searchlevel 1 et pour chaque element de mon tableau je refais un foreach..
Attention, tu crées l'objet dans la seconde itération.
Alexis écrit:
Tu fais l'erreur classique de confondre la présentation des données avec la structure d'enregistrement.je voudrais dans mon tableau Avoir un Saut de ligne ou espacer d'une colonne pour differencier ceux du searchlevel 1 de ceux du searchlevel 2 !!
Ajoute une propriété Level, ensuite c'est à l'outil de présentation de le gérer ( XL ou une fonction PS de formatage, txt, HTML, etc)
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.047 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- AD OU Keep tree order