Question
Création d'OU..Problème
- jean
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 24
- Remerciements reçus 0
Connexion ou Créer un compte pour participer à la conversation.
- jean
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 24
- Remerciements reçus 0
[code:1]$extract1 = @()[/code:1]
[code:1] $extract1 += for($i=1;$i -le $taille ;$i++) {$extract[$taille-$i]}[/code:1]
[code:1]ok = get-ADOrganizationalUnit -Filter \"Name -eq `\"$_`\"\" | where {$_.DistinguishedName -eq \"$($ou),$($dc)\"}}[/code:1]
[code:1] $ou = \"OU=\"+$_[/code:1]
Si tu pourrais me les expliquer ça serait sympa ^^
Ton code passe tout le temps dans AD indisponible je comprends pas...
C'est ce bout de code qui coince : [code:1]-Filter \"Name -eq `\"$_`\"\"
[/code:1]<br><br>Message édité par: jean21, à: 13/08/13 15:11
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
aller je me lance :Il y a certain bout de code que j'ai pas compris par contre :
Si tu pourrais me les expliquer ça serait sympa ^^
Pour[code:1]$extract1 = @()[/code:1]
creation d'un tableau (de chaine de caractere vide)
Pour[code:1] $extract1 += for($i=1;$i -le $taille ;$i++) {$extract[$taille-$i]}[/code:1]
le += rajoute un element au tableau $extract1
le for-next est une boucle qui lis les elements de $extract un par un, explication :
je commence par la fin element par element, $taille-1 puis $taille-2 etc... je reutilise l'extract et le taille de ton script
d ou le $extract[$taille-$i]
ex: pour Filiale Entreprise Manager domaine fr
Filiale a pour index 0 dans $extract
Entreprise a pour index 1 dans $extract
Manager a pour index 2 dans $extract
domaine a pour index 3 dans $extract
fr a pour index 4 dans $extract
$taille = 3 (5 elements -2 ) $taille = $extract.Length-2
donc a la premiere boucle for ca fait $taille-$i = 3-1 = 2 soit $extract[2] = Manager => $extract1 = \"Manager\"
au deuxieme passage dans for ca fait $taille-$i = 3-2 = 1 soit $extract[1] = Entreprise => $extract1 = \"Manager\", \"Entreprise\"
au troisieme passage dans for ca fait $taille-$i = 3-3 = 0 soit $extract[0] = Filiale => $extract1 = \"Manager\", \"Entreprise\", \"Filiale\"
a la fin $extract1 = \"Manager\", \"Entreprise\", \"Filiale\"
voila pour cette ligne
[code:1]$dc = \"DC=\"+($extract[-2])+\",DC=\"+$extract[-1][/code:1]non demander mais bon
ici $extract[-1] prend le dernier element de $extract
ici $extract[-2] prend le l'avant dernier element de $extract
Pour[code:1] $ou = \"OU=\"+$_[/code:1]
le $extract1 | foreach { renvoie chaque element de $extract dans $_ (variable du pipeline) un par un
donc au premier passage $ou = \"OU=Manager\"
au deuxieme passage $ou = \"OU=Entreprise\"
au troisieme passage et dernier $ou = \"OU=Filiale\"
Pour[code:1]$ok = get-ADOrganizationalUnit -Filter \"Name -eq `\"$_`\"\" | where {$_.DistinguishedName -eq \"$($ou),$($dc)\"}}[/code:1]
idem a ![ADSI]::exists(\"LDAP://$(\"OU=\"+($extract[$taille-1])+\",DC=\"+($extract[$taille])+\",DC=\"+$extract[$taille+1])\")
soit verification si une OU existe sans generé d'erreur si l'OU est absente :
le get-ADOrganizationalUnit remvois toutes les OU de l'AD avec pour nom le contenue de la variable pipe $_ (exemple \"Filiale\")
where {$_.DistinguishedName -eq \"$($ou),$($dc)\"} va donc filtrer le DistinguishedName correspond a celui rechercher (dans l'exemple : OU=Filiale,OU=Entreprise,OU=Manager,DC=domaine,DC=fr (une OU possible)
le resultat est remvoyer dans $ou
si $ok est vide rien trouver sinon contient les propriete de l'OU
il y plus cas testé dans le if !$ok si vide ou pas
si je n'est pas ete assez clair dis le moi
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
Ton code passe tout le temps dans AD indisponible je comprends pas...
C'est ce bout de code qui coince : [code:1]-Filter \"Name -eq `\"$_`\"\"
[/code:1]
quand tu dis \"passe tout le temps...\" tu veux dire que qu'il est tres lent ?
si il s'arrete directement c'est qu'il n'a pas accee a l'AD
commente les lignes try et catch au dessus et en dessous
et donne moi le message d'erreur !
cette partie peut etre optimiser pour les grosses AD ou serveurs un peu lent
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
Ahh t'a géré il est vraiment optimisé ton code ! Tu en avais besoin aussi ? pourquoi si c'est pas trop indiscret ?
et bien tout est gere par un OpenLDAP chez nous
et on syncronize l'AD a cette LDAP par des commandes sous DOS depuis une interface web globale a notre SI :
- ajout d'OU pour un nouveau site
- ajout d'utilisateur pour un site
- trie des ordinateurs par site
- chanement de nom, mot de passe, de fonction, de site...
- droits et permisions
- etc...
tous ca va bientot etre remplacer en powershell, qui lui pourra intervenir dans le LDAP dans certain cas (par exemple : dectection du changement de mon de passe de session windows par l'utilisateur)
donc la je prend un peu d'avance
Connexion ou Créer un compte pour participer à la conversation.
- jean
- Auteur du sujet
- Hors Ligne
- Membre junior
-
- Messages : 24
- Remerciements reçus 0
jean21 écrit:
Ahh t'a géré il est vraiment optimisé ton code ! Tu en avais besoin aussi ? pourquoi si c'est pas trop indiscret ?
et bien tout est gere par un OpenLDAP chez nous
et on syncronize l'AD a cette LDAP par des commandes sous DOS depuis une interface web globale a notre SI :
- ajout d'OU pour un nouveau site
- ajout d'utilisateur pour un site
- trie des ordinateurs par site
- chanement de nom, mot de passe, de fonction, de site...
- droits et permisions
- etc...
tous ca va bientot etre remplacer en powershell, qui lui pourra intervenir dans le LDAP dans certain cas (par exemple : dectection du changement de mon de passe de session windows par l'utilisateur)
donc la je prend un peu d'avance
Ah d'accord, ah oui tu vas avoir du boulot là ^^
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Création d'OU..Problème