Question
Requete multi-critères dans Active Directory
- ARRIVE
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 50
- Remerciements reçus 0
il y a 16 ans 6 mois #5242
par ARRIVE
Requete multi-critères dans Active Directory a été créé 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.
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.
- Alan Pinard
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 77
- Remerciements reçus 0
il y a 16 ans 6 mois #5251
par Alan Pinard
Alan Pinard
Version A
Réponse de Alan Pinard sur le sujet Re:Requete multi-critères dans Active Directory
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
<br><br>Message édité par: Versiona, à: 3/09/09 04:58
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
Alan Pinard
Version A
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- ARRIVE
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 50
- Remerciements reçus 0
il y a 16 ans 6 mois #5260
par ARRIVE
Réponse de ARRIVE sur le sujet Re:Requete multi-critères dans Active Directory
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
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
Connexion ou Créer un compte pour participer à la conversation.
- Alan Pinard
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 77
- Remerciements reçus 0
il y a 16 ans 6 mois #5272
par Alan Pinard
Alan Pinard
Version A
Réponse de Alan Pinard sur le sujet Re:Requete multi-critères dans Active Directory
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
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.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 16 ans 6 mois #5273
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:Requete multi-critères dans Active Directory
Salut,
Roro écrit:
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.
Roro écrit:
Un peu comme tout le mondeJ'apprends le PS tout seul et j'en ch....un peu beaucoup
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.
- ARRIVE
- Auteur du sujet
- Hors Ligne
- Membre senior
-
Réduire
Plus d'informations
- Messages : 50
- Remerciements reçus 0
il y a 16 ans 6 mois #5274
par ARRIVE
Réponse de ARRIVE sur le sujet Re:Requete multi-critères dans Active Directory
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 = \"(objectCategory=Group)\"
$objDomain = New-Object System.DirectoryServices.DirectoryEntry(\"LDAP://ou=xxx,dc=xxx,dc=xxx\"«»)
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = \"Subtree\"
$colProplist = \"name\",\"distinguishedname\",\"grouptype\",\"whencreated\"
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}
$colResults = $objSearcher.FindAll()
foreach ($objResult in $colResults)
{$objItem = $objResult.Properties;
\"Name :\" + $objItem.name
\"distinguishedname :\" + $objItem.distinguishedname
\"grouptype :\" + $objItem.grouptype
\"whencreated :\" + $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.
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 = \"(objectCategory=Group)\"
$objDomain = New-Object System.DirectoryServices.DirectoryEntry(\"LDAP://ou=xxx,dc=xxx,dc=xxx\"«»)
$objSearcher = New-Object System.DirectoryServices.DirectorySearcher
$objSearcher.SearchRoot = $objDomain
$objSearcher.PageSize = 1000
$objSearcher.Filter = $strFilter
$objSearcher.SearchScope = \"Subtree\"
$colProplist = \"name\",\"distinguishedname\",\"grouptype\",\"whencreated\"
foreach ($i in $colPropList){$objSearcher.PropertiesToLoad.Add($i)}
$colResults = $objSearcher.FindAll()
foreach ($objResult in $colResults)
{$objItem = $objResult.Properties;
\"Name :\" + $objItem.name
\"distinguishedname :\" + $objItem.distinguishedname
\"grouptype :\" + $objItem.grouptype
\"whencreated :\" + $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.096 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Requete multi-critères dans Active Directory