Question AD OU Keep tree order

Plus d'informations
il y a 11 ans 6 mois #18578 par xyz
Réponse de xyz sur le sujet Re:AD OU Keep tree order
Un oubli.
Une autre possibilité est de redéfinir la méthode ToString() :
[code:1]
$Obj=1|select Name,count
$Obj.Name='c:\temp'
$Obj.Count=0
Add-Member -InputObject $Obj -MemberType ScriptMethod -Name ToString -Value { $this.Name } -Force
$Obj|dir
[/code:1]
Dans certains cas et en dernier recours cela peut servir.

Tutoriels PowerShell

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

Plus d'informations
il y a 11 ans 6 mois #18580 par Dela
Réponse de Dela sur le sujet Re:AD OU Keep tree order
Laurent je t'en prie ne t'excuse pas !!!

Il n'y a aucune perte de temps !! Au contraire ! Tout ce que je vois me servira tôt ou tard et je vous remercie encore pour le partage de vos connaissances !!

J'ai fait un beau printscreen tout à l'heure ! Il ne s'est pas joint ! Dommage !! j'ai quitté le travail là ! Je fais mon menage et je me remets dessus ! je vais finir de creer mon arborescence ( hier KO j'ai pas terminé ) à la maison ! pour les Printscreen ca sera bcp plus claire car je n'aurais pas à cacher les infos de mon ad .... ca restera lisible oD

Je pense que j'ai emmelé les crayons à tlm à partir du moment ou l'on a refait le script !

Pour bien faire je vais finir mon arbo ! executer le script, faire des printscreen, mon export csv ae ce qui me va et ce qui ne me va pas ! et vous expliquer CLAIREMENT ce qu'il me faut , je sais qu'on a tous les éléments là ! Et je pense qu'avec mes histoires de LVL on a rajouté une couche inutile ;oD j'en suis dsl ! Je vous dis à plus tard.


Je vais prendre le tps de le faire bien

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

Plus d'informations
il y a 11 ans 5 mois #18582 par Philippe
Réponse de Philippe sur le sujet Re:AD OU Keep tree order
Merci Laurent pour cette formation qui est ta marque de fabrique et ce qui y a de bien chez toi !! :)

pour alexis
si j'ai bien compris (apres quelques tests sur mon AD)
le script fonctionne bien et le résultat est bon, mais dans le désordre (les différentes arborescence sont mélangé).
D'après ce que je vois Get-ADOrganizationalUnit renvoie les infos dans l'ordre d'ajout dans l'AD, ce qui avec le temps n'est plus bon.

Pour ne pas compliqué le script la première idée qui me viens s'est de triée la sortir de Get-ADOrganizationalUnit sur distinguishedname avec une fonction du type :

[code:1]$String = \"'OU=AsiaPacific,OU=Sales,OU=UserAccounts,DC=FABRIKAM,DC=COM'\"
([regex]::Matches($String,'.','RightToLeft') | ForEach {$_.value}) -join ''

# ou

$String = \"'OU=AsiaPacific,OU=Sales,OU=UserAccounts,DC=FABRIKAM,DC=COM'\"
$String = $String.ToCharArray()
[Array]::Reverse($String)
-join $String

# resultat 'MOC=CD,MAKIRBAF=CD,stnuoccAresU=UO,selaS=UO,cificaPaisA=UO'[/code:1]
pour que le trie soit bon !!

.

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

Plus d'informations
il y a 11 ans 5 mois #18583 par Dela
Réponse de Dela sur le sujet Re:AD OU Keep tree order
Bonjour, Désolé des urgences au taf, je dois laisser POWershell de coté qqes heures !

Enfait le resultat sort dans le desordre d'ou le fait dans mon tout premier script d'inserer les elements à chaques iteration au tableau !!


l'autre probleme est que les elements du searchscope LVL1 sont repassé au LVL2 et j'ai donc des doublons.

Enfait il me faut dans mon csv ( l'ordre des données est important car lié à de la facturation )

LVL1A TOTAL ENABLED DISABLED
LVL2de11 \" \"

LVL1B \" \"
LVL2de1B \" \"


je prends le temps des que je peux de faire les printscreen promis ! la je dois revoir des bornes créées en AutoIT ;oD je change de langage ! A plus tard je reviens rapidement vers vous !

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

Plus d'informations
il y a 11 ans 5 mois #18584 par Philippe
Réponse de Philippe sur le sujet Re:AD OU Keep tree order
la solution est dans la propriété canonicalName de Get-ADOrganizationalUnit :
[code:1]Get-ADOrganizationalUnit -filter * -property canonicalName | sort canonicalName[/code:1]
ton script initial devient donc :
[code:1]

[array]$table = @()

Get-ADOrganizationalUnit -filter * -SearchBase \"OU=Utilisateurs_Groupes;OU=MONAD,dc=MONDOMAINE,dc=COM\" -SearchScope 2 -property canonicalName |
where {$_.name -ne 'Utilisateurs' -and $_.name -ne 'Groupes'} | sort canonicalName | Foreach {

[string]$Name = $_.canonicalName


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:\test.csv
$Table | ft

[/code:1]<br><br>Message édité par: 6ratgus, à: 10/12/14 14:13

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

Plus d'informations
il y a 11 ans 5 mois #18587 par xyz
Réponse de xyz sur le sujet Re:AD OU Keep tree order
6ratgus écrit:

la solution est dans la propriété canonicalName

Bravo !

J'ai essayé de trier des nom OUs en l'état et en ajoutant d'autres informations, mais sans résultat :
[code:1]
Function New-OU{
param(
[Parameter(Mandatory=$True,position=0)]
$DN
)
[pscustomobject]@{
PSTypeName='OU';
DN=$DN;
Parent=$DN -replace '^OU=[^,]*,','';
Level=($DN -split ',').count
}


}# New-OU

$OUs=@(
(New-OU 'OU=SERVICE1,OU=Siege,OU=UserAccounts,DC=FABRIKAM,DC=COM' ),
(New-OU 'OU=PRO1,OU=PRO,OU=SiteExt,OU=UserAccounts,DC=FABRIKAM,DC=COM' ),
(New-OU 'OU=PRO2,OU=PRO,OU=SiteExt,OU=UserAccounts,DC=FABRIKAM,DC=COM' ),
(New-OU 'OU=SERVICE1-A,OU=SERVICE1,OU=Siege,OU=UserAccounts,DC=FABRIKAM,DC=COM' ),
(New-OU 'OU=SERVICE2,OU=Siege,OU=UserAccounts,DC=FABRIKAM,DC=COM' ),
(New-OU 'OU=Public1,OU=Public,OU=SiteExt,OU=UserAccounts,DC=FABRIKAM,DC=COM' ),
(New-OU 'OU=Public2,OU=Public,OU=SiteExt,OU=UserAccounts,DC=FABRIKAM,DC=COM' ),
(New-OU 'OU=SERVICE3,OU=Siege,OU=UserAccounts,DC=FABRIKAM,DC=COM' ),
(New-OU 'OU=Public3,OU=Public,OU=SiteExt,OU=UserAccounts,DC=FABRIKAM,DC=COM' )
)
[/code:1]
Le tri est basé sur l'ordre des caractères pas sur un ordre d'insertion.

Comme quoi de connaitre PS n'est pas suffisant, si on ne connait pas les objets qu'on manipule.

Tutoriels PowerShell

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

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