recherche global catalog [résolu] [powershell] - Shell/Batch - Programmation
Marsh Posté le 08-03-2014 à 14:41:05
personne n'a une idée ?
Marsh Posté le 11-03-2014 à 12:46:43
bon, alors soit je galère et je suis pas le seul, soit ma question est stupide, ou quoi ?
Marsh Posté le 12-03-2014 à 23:25:03
Tu a essayé un truc dans ce gout là http://www.happysysadm.com/2013/03 [...] shell.html ?
L’accélérateur semble etre de base dans powershell, tu fais ton interrogation GC avec le filter qui va bien et après tu parses le tableau de résultat.
Après j'ai quand même du mal à voir ce qui t’empêche de faire un Import-module, me semble pas qu'on soit obligé d’être sur un OS serveur pour faire ca.
Et ca te simplifierai pas mal la vie, car les p'tits gars de chez MS ont justement développer le module pour ca.
D'après http://technet.microsoft.com/fr-fr [...] .10).aspx:
If you want to use the Module Active Directory in Windows 7 to remotely manage an Active Directory domain, an AD LDS instance or configuration set, or an Active Directory Database Mounting Tool instance, you must have at least one Windows Server 2008 R2 domain controller in your domain or at least one instance in an AD LDS configuration set that is running on a Windows Server 2008 R2 server.
Peut-etre pas de 2008R2 sur tes domaines ?
Marsh Posté le 13-03-2014 à 12:02:42
je ne suis pas seul , merci !
pour w2K8R2, on en a. pas forcément en niveau de fonctionnalité 2008 mais on a du 2008R2, ça ouais.
après, moi je créé des comptes (ou je les cherche pour les modifier "en masse", justement ), j'ai pas toujours la vision de comment est configuré tout le reste (ce qui facilite pas le fait de trouver comment faire une recherche GC )
bon, en fait je crois etre déjà tombé sur la page de happysysadm.com
quand je fais le "getcurrentdomain()" au début, j'obtiens un truc style :
$dom =
forest = "domaine où j'ai pas d'accès".boite.fr
...
name = domaineinfo.boite.fr
si j'essaye de faire $root = [ADSI]"GC://$($dom.Name)", j'ai une erreur 0x8000500c (qui retourne rien de concluant coté code d'erreur ... )
et si je me bidouille un truc pour que ça marche ([ADSI]"GC://dc=domaineinfo,dc=boite,dc=fr" ), je me retrouve au point de départ : il me donne qu'un seul résultat venant du domaine "domaineinfo"
et pourtant, ça m'empèche pas d'arriver à faire des recherches "entire directory" dans la console AD ...
Marsh Posté le 13-03-2014 à 13:39:31
OK, Je suis pas au taff aujourd'hui mais demain je vais essayer de voir ce que je peux trouver, me semble qu'on a les mêmes problématiques multi-domaines en foret.
Ton objectif c'est de générer dynamiquement la liste des domaines quitte à virer ton foreach ou vraiment de tout faire avec un oneliner qui claque ?
Si c'est la première partie, ptet qu'il y a une piste coté DNS ?
Marsh Posté le 13-03-2014 à 16:34:14
non, je veux en gros virer mon foreach ou éviter de faire les itérations si il manque la moitié des domaines.
en fait la recherche n'est que la première étape d'un script qui me copie les comptes.
accessoirement je peux aussi faire des recherches pour autre chose, en fonction d'un UAC ou d'un type de samaccountname, et j'aimerais pouvoir le faire en une fois sur tous les domaines.
le faire en powershell v1 me permet aussi de comprendre comment ça marche
Marsh Posté le 14-03-2014 à 11:37:38
D'après ce que j'ai pu lire a droit et à gauche, le GC ne contient qu'un subset des attributs LDAP.
Donc du coup pour certains attributs, j'ai l'impression que tu seras quand même obligé de faire du foreach.
J'ai trouvé ce truc là du coup (http://blog.vertigion.com/post/17222808752/powershell-search-across-multiple-domains-in-a-forest):
Citation : $forestName = ([System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()).Name |
Qui semble donner des résultats plutôt intéressants ici, pas chez toi ?
En cherchant du coté des attribtus de ([System.DirectoryServices.ActiveDirectory.Forest]::GetCurrentForest()) aussi.
Ici on est en trust relationship avec d'autres domaines, mais j'ai pas la liste des autres domaines du trust dans l'objet retourné, étrange.
Marsh Posté le 14-03-2014 à 12:42:50
tout à fait, voir la liste ici :
http://msdn.microsoft.com/en-us/li [...] 85%29.aspx
me semble que c modifiable suivant la config voulue dans une certaine mesure, ya une façon de faire une requete pour justement avoir la liste des attributs du GC.
moi mon problème est de pas avoir à faire un foreach sur 10, 20 ou 30 domaines quand ya que 2 domaines qui m'intéressent.
style requete GC sur le samaccountname ou le commonname ou le surname (SN, nom de famille), qui sont des attributs GC par défaut : je fais la requete sur toute ma foret, il me trouve 3 utilisateurs, il me renvoie les DN, de là je me connecte en faisant un foreach, non plus sur chaque (10, 20, 30...) domaine pour faire la recherche mais directement sur les (2 ou 3) DN pour faire la modif sur chaque user (changer son mot de passe, le désactiver, etc...)
edit : ton code marche .... merciiiii !!!
le truc rigolo : si je lui demande de m'afficher $adspath, il m'envoie une erreur
et je crois qu'en fait, ce site aussi je l'ai déjà visité. mais je crois qu'en regardant pas à pas comment il faisait, je m'étais arrété à l'erreur sur $ADsPath
si je continue en lui disant de créer un directorysearcher avec cette variable comme searchroot, ça marche. dafuq.
edit 2 : bon, plus qu'à modifier tous mes scripts
Marsh Posté le 14-03-2014 à 13:23:05
Il te retourne quoi comme erreur ?
Moi quand je cherche à l'afficher ca mouline, je CTRL+C avant dans le doute où il m'afficherai toute la foret.
Peut-etre que ce type d'objet ne peut pas etre affiché tout simplement...
Marsh Posté le 14-03-2014 à 15:37:44
texto, voilà l'erreur que j'ai :
Code :
|
qui semblerait vaguement vouloir dire que le format n'est pas le bon (erreur qu'on peut avoir en faisant une requete LDAP sur un serveur openldap non configuré pour windows )
l'option "pas affichable directement" me tente bien ... mais ne me satisfait pas intellectuellement parlant ²²²²
Marsh Posté le 14-03-2014 à 17:52:41
Pour avoir le module AD sur ton poste, il suffit d'installer le RSAT, pas de besoin de te connecter au DC (je suppose que tu as au moins un DC 2008 R2).
Sinon, tu peux faire de l'implicit remoting :
- New-PsSession sur le DC
- Import-Module AD*
-Import-PsSession
et là tout est accessible depuis ton poste, même si tu as zéro module installé.
Marsh Posté le 14-03-2014 à 23:19:53
ça serait une autre idée.
comme j'ai déjà des scripts qui sont en prod pour d'autres personnes (et donc d'autres postes que le mien sur lesquels je vais pas m'amuser à installer chaque fois le module powershell), je pense que cette solution aurait été préférable, mais là j'ai résolu mon souci sans le module AD
mais merci
Marsh Posté le 07-03-2014 à 15:44:52
Bonjour,
je cherche à faire des recherches dans active directory via requetes LDAP.
j'ai une foret avec plein de domaines (15+) au meme niveau hiérarchique, cad :
DC=domaine1,DC=boite,DC=fr
DC=domaine2,DC=boite,DC=fr
...
DC=domaine10,DC=boite,DC=fr
on a souvent des utilisateurs qui ont besoin d'accéder aux memes ressources sur les différents domaines.
ils ont donc des comptes type :
CN=martin dupont admin,OU=administrateur,DC=domaine1,DC=boite,DC=fr
CN=martin dupont admin,OU=administrateur,DC=domaine2,DC=boite,DC=fr
etc.
actuellement, je fais des recherches ldap en me connectant sur chaque domaine pour chercher le CN ou le samaccountname
style :
mon problème :
si je m'amuse à faire une connexion GC comme ça :
$srchroot = New-Object System.DirectoryServices.DirectoryEntry("GC://DC=domaine1,DC=boite,DC=fr" )
et en précisant :
$objsearcher.referralchasing = "all" # pour qu'il continue en se connectant à la référence renvoyée par la 1e recherche / j'ai lu que "all" n'est pas pris en charge par certains types de recherche, mais meme chose en utilisant "external" qui est le seul qui nous intéresse réellement : se connecter à la référence renvoyée si elle est externe au contexte de nommage actuel ...
il ne me renvoie que mon user dans domaine1, sans aller me chercher les autres (c'est pourtant l'intéret d'une recherche GC, non ?)
cad que si je lui demande $colresults.count, il me renvoie 1 et le findall() me provoque pas d'erreurs.
si j'essaye de me connecter en utilisant "GC://DC=boite,DC=fr", il m'envoie chier à la connexion
si j'essaye de me connecter en utilisant domaine2, il ne me renvoie que l'utilisateur sur domaine2, etc.
ya quoi que j'oublie de faire et qu'ils passent sous silence dans la littérature ?
je précise que je lance mes scripts en faisant un get-credential avec mes identifiants admin, et que je préfère passer par powershell sur mon poste et pas sur les serveurs, donc pas d'extensions powershell pour gérer l'AD. (c plus pratique pour gérer les fichiers et faire des traitements potentiellement "lourds" sur les données sans me poser la question de savoir si le serveur a pas autre chose à faire )
si quelqu'un a une idée ? moi j'ai rien trouvé en épluchant les pages de résultats google parce que la recherche est très vague et ramène des tas de trucs qu'ont rien à voir
merci
Message édité par misato le 14-03-2014 à 13:03:54
---------------
shibboleet ! - HADOPI vous a plu ? Vous allez adorer la LOPPSI ! - generation NT bande de criminels inconscients !