Question Requete multi-critères dans Active Directory

Plus d'informations
il y a 16 ans 6 mois #5242 par ARRIVE
Bonjour,

J'ai besoin de réaliser des requetes dans Active Directory basées sur plusieurs critères.
Exemple :
Je souhaite avoir la liste des groupes avec les attributs suivants :
-cn
-description
-distinguedname
-grouptype
-name
-whencreated

J'ai un script qui me permet de faire ce genre de requete, mais en idiquant qu'un seul attribut :

$strBase = \"<LDAP://ou=utilisateurs,ou=groupes,ou=xxx,ou=xxx,dc=xxx,dc=xxx,dc=xxx>\"
$strFilter = \"(objectCategory=group)\"
$strAttributes = \"cn\"
$strScope = \"subtree\"
$strQuery = \"$strBase;$strFilter;$strAttributes;$strScope\"

$objConnection = New-Object -comObject \"ADODB.Connection\"
$objCommand = New-Object -comObject \"ADODB.Command\"
$objConnection.Open(\"Provider=ADsDSOObject;\")
$objCommand.ActiveConnection = $objConnection
$objCommand.CommandText = $strQuery
$objRecordSet = $objCommand.Execute()

Do
{
$objRecordSet.Fields.item(\"cn\") |Select-Object Value
$objRecordSet.MoveNext()
}
Until ($objRecordSet.eof)

$objRecordSet

$objConnection.Close()

Ce que je ne parviens pas à faire, c'est de passer plusieurs paramètres à ma variable $strAttributes

Si quelqu'un a une idée sur la question cela m'aiderait énormement.

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

Plus d'informations
il y a 16 ans 6 mois #5251 par Alan Pinard
Bonjour Roro,

Je ne sais pas si cela peut t'aider mais je viens de faireu ne fonction qui répondrait p-e à tes besoins:

[code:1]
Function Get-VAADInfo {

PARAM (
[String]$ADObjectClass,
[String]$ADObjectProperty,
[String]$objObjectPropertyValue
)


$strFilter = \"(&(objectCategory=\" + $ADObjectClass + \"«»)(\" + $ADObjectProperty + \"=\" + $objObjectPropertyValue + \"«»))\"
$objAD = New-Object System.DirectoryServices.DirectoryEntry

$objADSearcher = New-Object System.DirectoryServices.DirectorySearcher -Argumentlist $objAD,$strFilter
$objAD = $objADSearcher.FindOne()
$DNobjAD = ($objAD.GetDirectoryEntry()).DistinguishedName

$objAD = New-Object DirectoryServices.DirectoryEntry(\"LDAP://\" + $DNobjAD)

Return $objAD
}
$a = Get-VAADInfo -ADObjectClass \"user\" -ADObjectProperty \"sAMAccountName\" -objObjectPropertyValue \"aJean-Claude Leroux\"

Write-host \"Name: $($a.Name)\"
Write-host \"CN: $($a.cn)\"
Write-host \"DistinguishedName: $($a.DistinguishedName)\"
Write-host \"Description: $($a.Description)\"
Write-host \"Created: $($a.WhenCreated)\"
[/code:1]
Ce qui peut retourner un truc dans ce genre:
[code:1]
Name: Jean-Claude Leroux
CN: Jean-Claude Leroux
DistinguishedName: CN=Jean-Claude Leroux,OU=Version A,DC=valab,DC=local
Description: Scripteur Powershell débutant
Created: 10/29/1534 20:18:03
[/code:1]


Tu décider d'utiliser l'information autrement que de l'afficher dans la console.

En espérant que cela pourra t'aider.

Alan Pinard
Version A

La pièce jointe Get_VAADInfo.ps1 est absente ou indisponible

<br><br>Message édité par: Versiona, à: 3/09/09 04:58

Alan Pinard
Version A
Pièces jointes :

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

Plus d'informations
il y a 16 ans 6 mois #5260 par ARRIVE
Bonjour et merci Versiona pour la rapidité de ta réponse.

Ton script m'interesse fortement. Comment à partir de ton script je peux pointer sur une OU précise et lister les groupes de cette OU en récupérant les informations que donne le resultat de ton script à savoir:
Name
CN
DN
Description
Created

J'apprends le PS tout seul et j'en ch....un peu beaucoup :P

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

Plus d'informations
il y a 16 ans 6 mois #5272 par Alan Pinard
Bonjour Roro,

Désolé pour le temps de réponse! Je t'invite à jeter un coup d'oeil sur ce site de microsoft:
[code:1]
www.microsoft.com/technet/scriptcenter/t...winpsh/searchad.mspx
[/code:1]

Demain, je te donnerai un coup de pouce si jamais tu n'est pas capable de régler ton problème.

Alan Pinard
Version A

Alan Pinard
Version A

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

Plus d'informations
il y a 16 ans 6 mois #5273 par Laurent Dardenne
Salut,
Roro écrit:

J'apprends le PS tout seul et j'en ch....un peu beaucoup :P

Un peu comme tout le monde :)

Pour ton problème il faut déjà regarder les possibilités offertes par l'objet que tu manipules.
En consultant MSDN, on trouve ceci , l'exemple s'appuie sur la propriétés PropertiesToLoad .
Elle répond à ton besoin il me semble.

Tutoriels PowerShell

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

Plus d'informations
il y a 16 ans 6 mois #5274 par ARRIVE
Bonjour Versiona,

Effectivement grace au lien que tu m'as fourni, j'ai pu trouver mon bonheur sur le site de MS. Je suis parti du code qui était donné sur le site et j'ai pu réaliser la requete dont j'avais besoin voici le code si cela peut dépanner d'autres powershelleurs :-)

[code:1]$strFilter = \&quot;(objectCategory=Group)\&quot;

$objDomain = New-Object System.DirectoryServices.DirectoryEntry(\&quot;LDAP://ou=xxx,dc=xxx,dc=xxx\&quot;«»)

$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = \&quot;Subtree\&quot;

$colProplist = \&quot;name\&quot;,\&quot;distinguishedname\&quot;,\&quot;grouptype\&quot;,\&quot;whencreated\&quot;
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}

$colResults = $objSearcher.FindAll()

foreach ($objResult in $colResults)
{$objItem = $objResult.Properties;
\&quot;Name :\&quot; + $objItem.name
\&quot;distinguishedname :\&quot; + $objItem.distinguishedname
\&quot;grouptype :\&quot; + $objItem.grouptype
\&quot;whencreated :\&quot; + $objItem.whencreated[/code:1]

De cette manière on peut rajouter autant d'attribut que l'on souhaite dans la requete.

Etape suivante, il faudrait que je trouve un moyen pour organiser les données dans un tableau pour plus de lisibilité...ou alors trouver le moyen de renvoyer les données dans un fichier pour une meilleur exploitation des informations, mais là ça dépasse mes compétences en PS.

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

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