IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Scripts/Batch Discussion :

ERREUR : La valeur fournie pour adsObject n'implémente pas les IAD. [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2017
    Messages : 9
    Par défaut ERREUR : La valeur fournie pour adsObject n'implémente pas les IAD.
    Bonjour à tous,

    Je rencontre des difficultés lors de l'exécution de se script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $account = "test34"
        $Searcher = New-Object DirectoryServices.DirectorySearcher
        $Searcher.Filter = '(&(objectCategory=person)(sAMAccountName='+$account+'))'
        $Searcher.SearchRoot = "LDAP://OU=_USERS,DC=DOMAINE,DC=dom"
        [string]$Info = $Searcher.FindOne() | select Path
    	#On ne conserve que la partie LDAP...jusqu'à net
            $separator = "@{Path=","}" #termes à supprimer
            $option = [System.StringSplitOptions]::RemoveEmptyEntries #cette option supprime les espaces
            $User = $Info.Split($separator,$option) # $$User récupère le chemin souhaité
        #Fin de la récupération 
    	$ModifHome= [adsi]($User)
    	$ModifHome.homeDrive.Clear()
        $ModifHome.homedirectory.Clear()
    	$ModifHome.CommitChanges()
    Voici les erreurs remontées :
    Impossible de convertir la valeur «*System.String[]*» en type «*System.DirectoryServices.DirectoryEntry*». Erreur*: «*La valeur fournie pour adsObject n'implémente pas les IAD.*»
    Au niveau de C:\00_test.ps1*: 11 Caractère*: 26
    + $ModifHome= [adsi]($User <<<< )
    + CategoryInfo : NotSpecified: ( [], RuntimeException
    + FullyQualifiedErrorId : RuntimeException

    Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
    Au niveau de C:\00_test.ps1*: 12 Caractère*: 28
    + $ModifHome.homeDrive.Clear <<<< ()
    + CategoryInfo : InvalidOperation: (Clear:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

    Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
    Au niveau de C:\00_test.ps1*: 13 Caractère*: 35
    + $ModifHome.homedirectory.Clear <<<< ()
    + CategoryInfo : InvalidOperation: (Clear:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull

    Vous ne pouvez pas appeler de méthode sur une expression ayant la valeur Null.
    Au niveau de C:\00_test.ps1*: 14 Caractère*: 26
    + $ModifHome.CommitChanges <<<< ()
    + CategoryInfo : InvalidOperation: (CommitChanges:String) [], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull
    Alors que, si je modifie mon script comme ceci, cela fonctionne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $account = "test34"
        $Searcher = New-Object DirectoryServices.DirectorySearcher
        $Searcher.Filter = '(&(objectCategory=person)(sAMAccountName='+$account+'))'
        $Searcher.SearchRoot = "LDAP://OU=_USERS,DC=DOMAINE,DC=dom"
        [string]$Info = $Searcher.FindOne() | select Path
    	#On ne conserve que la partie LDAP...jusqu'à net
            $separator = "@{Path=LDAP://","}","DC=dom" #termes à supprimer
            $option = [System.StringSplitOptions]::RemoveEmptyEntries #cette option supprime les espaces
            $User = $Info.Split($separator,$option) # $$User récupère le chemin souhaité
        #Fin de la récupération 
    	$ModifHome= [adsi]('LDAP://'+$User+'DC=com')
    	$ModifHome.homeDrive.Clear()
        $ModifHome.homedirectory.Clear()
    	$ModifHome.CommitChanges()
    Modification sur la ligne 7 et 11.

    Merci de votre aide.

  2. #2
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Billets dans le blog
    1
    Par défaut
    Salut
    la méthode string.Split renvoi un tableau de chaînes :
    Code powershell : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    $s='test'
    $s.Split
    # OverloadDefinitions
    # -------------------
    # string[] Split(Params char[] separator)
    # string[] Split(char[] separator, int count)
    # string[] Split(char[] separator, System.StringSplitOptions options)
    # string[] Split(char[] separator, int count, System.StringSplitOptions options)
    # string[] Split(string[] separator, System.StringSplitOptions options)
    # string[] Split(string[] separator, int count, System.StringSplitOptions options)
    [adsi]($User) appel un constructeur, mais dans la liste des constructeurs aucun n'attend de tableau.
    $users.Getype() pour confirmer, bien que le message d'erreur soit explicite.

    Un usage de $user[0] ou une reconstruction d'une chaîne réglera à priori ton pb.

  3. #3
    Membre habitué
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Février 2017
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Février 2017
    Messages : 9
    Par défaut [RESOLU] ERREUR : La valeur fournie pour adsObject n'implémente pas les IAD.
    Effectivement,

    En plaçant [string] devant $users (Ligne 9) cela fonctionne.
    Merci pour ton info.

    Bonne journée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 08/03/2012, 10h13
  2. Réponses: 1
    Dernier message: 12/06/2011, 22h23
  3. Réponses: 2
    Dernier message: 17/07/2007, 09h49
  4. Réponses: 2
    Dernier message: 12/07/2007, 10h12
  5. Erreur : Valeur incorrecte pour ce champ
    Par Invité dans le forum Access
    Réponses: 5
    Dernier message: 04/01/2006, 12h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo