Question
Récupérer UID LDAP Unix pour créer compte AD
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
La pièce jointe Novell_Ldap.zip est absente ou indisponible
Tutoriels PowerShell
Pièces jointes :
Connexion ou Créer un compte pour participer à la conversation.
- bill_
- Auteur du sujet
- Hors Ligne
- Membre senior
- Messages : 74
- Remerciements reçus 0
$serveur = \"mon_serveur_ldap\"
$DN = \"CN=toto,OU=people,DC=masociete,DC=fr\"
$attribut = \"cn\"
# Charge l'assembly Novell
$FullPath = \"C:\Novell.Directory.Ldap.dll\"
[void][Reflection.Assembly]::LoadFile($FullPath)
$ldapConn = New-Object Novell.Directory.Ldap.LdapConnection
$ldapException = New-Object Novell.Directory.Ldap.LdapException
$LdapEntry = New-Object Novell.Directory.Ldap.LdapEntry
&{
$ldapConn.Connect($serveur,389)
$ldapConn.Bind($DN,$passwd)
$lsc = $ldapConn.Search(\"OU=people,DC=masociete,DC=fr\",$LdapConnection.SCOPE_ONE,\"ObjectClass=*\",$null,$false)
#Write-Host $lsc
while ($lsc.hasMore())
{
[Novell.Directory.Ldap.LdapEntry] $nextEntry = $Null
#Exception is thrown, go for next entry
trap [Novell.Directory.Ldap.LdapException]
{ Write-Warning Write-Host \"Error: $_.LdapErrorMessage\"; Continue }
{
$nextEntry = $lsc.next()
}
Write-Host \"$nextEntry.DN\"
[Novell.Directory.Ldap.LdapAttributeSet] $attributeSet = $nextEntry.getAttributeSet()
[System.Collections.IEnumerator] $ienum = $attributeSet.GetEnumerator()
while($ienum.MoveNext())
{
[Novell.Directory.Ldap.LdapAttribute] $attribute=[LdapAttribute] $ienum.Current
[string] $attributeName = $attribute.Name;
[string] $attributeVal = $attribute.StringValue;
Write-Host \"$attribute.Name - Value: $attribute.StringValue\"
}
}
Write-Host \"Success !\"
$LdapConn.Disconnect()[/code:1]
J'ai essayé avec l'autre version de la .dll c'est la même chose<br><br>Message édité par: spz, à: 23/04/08 14:14
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
as-tu essayé avec une autre valeur, par exemple SCOPE_BASE ?
Test avec \"(objectclass=*)\" au lieu de \"ObjectClass=*\", ce paramètre suit une syntaxe particulière, vérifie dans la doc, je crois que le code C# d'exemple est faux.
Essaie avec le contenu de $DN au lieu de \"OU=people,DC=masociete,DC=fr\", je ne sais pas si c'est sensée...
Enfin vérifie si hasmore renvoie bien $false :
[code:1]if (!$lsc.hasMore()) {write \"Plus de donnée.\"} else {write \"Des données sont disponibles\"}[/code:1]
Je ne peut pas faire grand chose de plus car on ne sais pas si la requête que tu effectues est juste ou pas.
Il te faut un outil externe pour valider ton script.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- bill_
- Auteur du sujet
- Hors Ligne
- Membre senior
- Messages : 74
- Remerciements reçus 0
[code:1]$ldapConn.Connect($serveur,389)
$ldapConn.Bind($DN,$passwd)
$Entry = $LdapConn.Read($DN)[/code:1]
J'ai mis à la suite un Write-Host $Entry et ça m'affiche :
LdapEntry: cn=toto,ou=people,dc=masociete,dc=fr; LdapAttributeSet: LdapAttribute: {type='sn', value='toto'} LdapAttribute: {type='userPassword', value='{CRYPT}7kROYm1GQfxnF'} LdapAttribute: {type='cn', value='toto'} LdapAttribute: {type='objectClass', values='top','person'}
Je pense que je touche au bout<br><br>Message édité par: spz, à: 23/04/08 16:23
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6302
- Remerciements reçus 68
Je doute, mais qui veux vivre est condamné à l'espoirJe pense que je touche au bout
Je dirais que tu reviens qq post en arrière, bon on verra bien.
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- bill_
- Auteur du sujet
- Hors Ligne
- Membre senior
- Messages : 74
- Remerciements reçus 0
Ok, je viens de comprendre, je sais que déjà que ça fonctionne, maintenant je code pour afficher seulement un seul attribut grâce à la recherche, seulement il me dit une erreur, voici le code mis à jour :
[code:1]$lsc = $ldapConn.Search(\"OU=people,O=masociete,O=fr\",$LdapConnection.SCOPE_ONE,\"(&(objectClass=\" + $DN + \"«»))\",$null,$false)
while ($lsc.hasMore())
{
[Novell.Directory.Ldap.LdapEntry] $nextEntry = $Null
#Exception is thrown, go for next entry
trap [Novell.Directory.Ldap.LdapException]
{
Write-Warning Write-Host \"Error: $_.LdapErrorMessage\"; Continue
}
{
$nextEntry = $lsc.next()
}
Write-Host \"$nextEntry.DN\"
[Novell.Directory.Ldap.LdapAttributeSet] $attributeSet = $nextEntry.getAttributeSet()
[System.Collections.IEnumerator] $ienum = $attributeSet.GetEnumerator()
while($ienum.MoveNext())
{
[Novell.Directory.Ldap.LdapAttribute] $attribute=[LdapAttribute] $ienum.Current
[string] $attributeName = $attribute.Name;
[string] $attributeVal = $attribute.StringValue;
Write-Host \"Value: $attribute.StringValue\"
}
}[/code:1]
En modifiant le début de cette ligne, j'ai changé DC par O :
[code:1]$ldapConn.Search(\"OU=people,O=masociete,O=fr\"[/code:1]
et maintenant le script rentre dans la boucle while qui suit, mais j'ai cette erreur :
Source : System.Management.Automation.RuntimeException
Erreur : Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
Et ça pointe sur cette ligne :
[code:1][Novell.Directory.Ldap.LdapAttributeSet] $attributeSet = $nextEntry.getAttributeSet()[/code:1]
La variable $nextEntry est toujorus null pour lui
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Récupérer UID LDAP Unix pour créer compte AD