Question ADSI : marche au prompt, pas en script

Plus d'informations
il y a 14 ans 7 mois #5012 par Patrick Berthon
Bonjour,

un petit problème :

[code:1]
function Get-AD($qry) {
$MyBase = New-Object -typeName System.DirectoryServices.DirectoryEntry(\"LDAP://$(Get-NetBiosDomainName)\"«»)
New-Object System.DirectoryServices.DirectorySearcher -ArgumentList $MyBase, $qry
}

function Get-ADUser($cn) {
$user = Get-AD -qry \"(&(objectClass=user)(cn=$cn))\"
$user.FindOne()
}

function Get-ADUser2($cn) {
$user = Get-ADUser -cn $cn
$user2 = [ADSI]$($user.Path)
$user2
}
[/code:1]

si je fais une fonction qui contient ce code (sachant que les utilisateurs existent déjà, ne vous fiez pas au nom de la variable $nouveau):

[code:1]
$nouveaux | Foreach-Object {
$login = Get-LoginName -ldap_user $_
$u = Get-ADUser2 -cn $login
$u.Put(\"Description\", $_.gecos)
$u.Put(\"mail\", $_.mail)
$u.SetInfo()
[/code:1]

ça me renvoie ça :
Exception calling \"Put\" with \"2\" argument(s): \"Exception from HRESULT: 0x80005008\"
At C:\Temp\CreeComptes.ps1:228 char:10
+ $u.Put <<<< (\"Description\", $_.gecos)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

Exception calling \"Put\" with \"2\" argument(s): \"Exception from HRESULT: 0x80005008\"
At C:\Temp\CreeComptes.ps1:229 char:10
+ $u.Put <<<< (\"mail\", $_.mail)
+ CategoryInfo : NotSpecified: (:) [], MethodInvocationException
+ FullyQualifiedErrorId : CatchFromBaseAdapterMethodInvokeTI

alors que si je le fais au prompt (en prenant un utilisateur au hasard dans ma console de gestion des comptes), ça marche !

quelqu'un à une idée ?

merci

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

<br><br>Message édité par: Zylwee, à: 2/08/09 09:36

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

Plus d'informations
il y a 14 ans 7 mois #5058 par Laurent Dardenne
Zylwee écrit:

quelqu'un à une idée ?

Je ne pense pas qu'on puisse appeler cela une idée mais vérifie avec Write-Debug si l'objet courant dans le pipeline est bien renseigné.
Ensuite d'utiliser le script Resolve-Error( dispo sur le blog de MS-PowerShell) puis de lier le résultat de son exécution, suite à cette erreur, serait fort appréciable pour ceux et celles qui souhaiterait t'aider.

Voir aussi, certains, codes d'erreur ADSI .

Tutoriels PowerShell

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

Plus d'informations
il y a 14 ans 7 mois #5097 par Patrick Berthon
bonjour,

merci pour les pistes, je suis en vacances, et comme c'est urgent, j'utiliserai les commandes dsadd en attendant de trouver le pourquoi du comment quand je retournerai au boulot.

je vous tiendrai au courant.

merci.

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

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