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 :

Modification de données directement dans AD [PowerShell]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté Avatar de berrichon
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Par défaut Modification de données directement dans AD
    Bonjour une nouvelle question un petit peu plus hardue que la première. Celle d'avant c'était juste pour valider que vous étiez de bon pédagogue ;-)

    voila je voudrais modifier l'attribut dSHeuristics d'un objet dont le chemin LDAP est le suivant : CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration

    J'en suis pour l'instant dans mes recherche au morceau de code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $foo=([adsi]"LDAP://SYD-DC1:389/CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration").psbase
    $foo.properties["dSHeuristics"].Value = "001"
    Simplement il me jette en disant que la proprité value n'éxiste pas.

    Or je suis sur que cet attribut existe puisque je le vois parfaitement grace à adsiedit ou LDP. Et même je puis vous direqu'il est de type "unicode string" et que par défaut il a pour valeur "not set".... Moi ce que je voudrais c'est qu'à la fin il ai pour valeur 001.

    Encore une fois merci pour votre infinie patience.

  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,
    Citation Envoyé par berrichon Voir le message
    Simplement il me jette en disant que la proprité value n'éxiste pas.
    Il est préférable d'indiquer le message d'erreur.
    Ceci fonctionne-t-il ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $foo.properties["dSHeuristics"]="001"
    Que donne l'affichage de cette propriété ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $foo.properties["dSHeuristics"]
    Et quels membres propose-t-elle ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $foo.properties["dSHeuristics"]|Get-member
    #et/ou 
    $foo|Get-member
    De mon coté je connais très peu AD mais je vais essayer de t'aider...

  3. #3
    Membre expérimenté Avatar de berrichon
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Par défaut
    bonsoir Laurent et encore une fois merci pour ta précieuse aide.

    voici les réponse de PS à tes différentes questions :

    ce qui laisse penser qu'il existe une bonne méthode mais que je ne la connait pas encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    [PS] C:\>$foo.properties["dSHeuristics"]="001"
    L'affectation du tableau à [dSHeuristics] a échoué*: New PropertyValueCollectio
    n cannot be set into a DirectoryEntry PropertyCollection..
    Au niveau de ligne*: 1 Caractère*: 19
    + $foo.properties[" <<<< dSHeuristics"]="001"
    ce qui laisse penser qu'il s'agit bien d'une variable initialiser à <not set> part défaut sauf que j'ai essayé de rentrer manuellement une valeur à dsheuristics et j'ai obtenu exactement la même chose...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    [PS] C:\>$foo.properties["dSHeuristics"]
    [PS] C:\>
    bon ca ca semble normale si considère qu'il s'agit d'un attribut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    [PS] C:\>$foo.properties["dSHeuristics"]|Get-member
    Get-Member : Aucun objet n'a été spécifié pour get-member.
    Au niveau de ligne*: 1 Caractère*: 44
    + $foo.properties["dSHeuristics"]|Get-member <<<<
    bon la je commence à montrer les limites de mon incimpétence. Je tenterais bien le coup avec invokeSet mais je suis sec sur comment fair parler le mode d'emploi d'une méthode....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    [PS] C:\>$foo|Get-member
    
    
       TypeName: System.Management.Automation.PSMemberSet
    
    Name                      MemberType Definition
    ----                      ---------- ----------
    add_Disposed              Method     System.Void add_Disposed(EventHandler v...
    Close                     Method     System.Void Close()
    CommitChanges             Method     System.Void CommitChanges()
    CopyTo                    Method     System.DirectoryServices.DirectoryEntry...
    CreateObjRef              Method     System.Runtime.Remoting.ObjRef CreateOb...
    DeleteTree                Method     System.Void DeleteTree()
    Dispose                   Method     System.Void Dispose()
    Equals                    Method     System.Boolean Equals(Object obj)
    GetHashCode               Method     System.Int32 GetHashCode()
    GetLifetimeService        Method     System.Object GetLifetimeService()
    GetType                   Method     System.Type GetType()
    get_AuthenticationType    Method     System.DirectoryServices.Authentication...
    get_Children              Method     System.DirectoryServices.DirectoryEntri...
    get_Container             Method     System.ComponentModel.IContainer get_Co...
    get_Guid                  Method     System.Guid get_Guid()
    get_Name                  Method     System.String get_Name()
    get_NativeGuid            Method     System.String get_NativeGuid()
    get_NativeObject          Method     System.Object get_NativeObject()
    get_ObjectSecurity        Method     System.DirectoryServices.ActiveDirector...
    get_Options               Method     System.DirectoryServices.DirectoryEntry...
    get_Parent                Method     System.DirectoryServices.DirectoryEntry...
    get_Path                  Method     System.String get_Path()
    get_Properties            Method     System.DirectoryServices.PropertyCollec...
    get_SchemaClassName       Method     System.String get_SchemaClassName()
    get_SchemaEntry           Method     System.DirectoryServices.DirectoryEntry...
    get_Site                  Method     System.ComponentModel.ISite get_Site()
    get_UsePropertyCache      Method     System.Boolean get_UsePropertyCache()
    get_Username              Method     System.String get_Username()
    InitializeLifetimeService Method     System.Object InitializeLifetimeService()
    Invoke                    Method     System.Object Invoke(String methodName,...
    InvokeGet                 Method     System.Object InvokeGet(String property...
    InvokeSet                 Method     System.Void InvokeSet(String propertyNa...
    MoveTo                    Method     System.Void MoveTo(DirectoryEntry newPa...
    RefreshCache              Method     System.Void RefreshCache(), System.Void...
    remove_Disposed           Method     System.Void remove_Disposed(EventHandle...
    Rename                    Method     System.Void Rename(String newName)
    set_AuthenticationType    Method     System.Void set_AuthenticationType(Auth...
    set_ObjectSecurity        Method     System.Void set_ObjectSecurity(ActiveDi...
    set_Password              Method     System.Void set_Password(String value)
    set_Path                  Method     System.Void set_Path(String value)
    set_Site                  Method     System.Void set_Site(ISite value)
    set_UsePropertyCache      Method     System.Void set_UsePropertyCache(Boolea...
    set_Username              Method     System.Void set_Username(String value)
    ToString                  Method     System.String ToString()
    AuthenticationType        Property   System.DirectoryServices.Authentication...
    Children                  Property   System.DirectoryServices.DirectoryEntri...
    Container                 Property   System.ComponentModel.IContainer Contai...
    Guid                      Property   System.Guid Guid {get;}
    Name                      Property   System.String Name {get;}
    NativeGuid                Property   System.String NativeGuid {get;}
    NativeObject              Property   System.Object NativeObject {get;}
    ObjectSecurity            Property   System.DirectoryServices.ActiveDirector...
    Options                   Property   System.DirectoryServices.DirectoryEntry...
    Parent                    Property   System.DirectoryServices.DirectoryEntry...
    Password                  Property   System.String Password {set;}
    Path                      Property   System.String Path {get;set;}
    Properties                Property   System.DirectoryServices.PropertyCollec...
    SchemaClassName           Property   System.String SchemaClassName {get;}
    SchemaEntry               Property   System.DirectoryServices.DirectoryEntry...
    Site                      Property   System.ComponentModel.ISite Site {get;s...
    UsePropertyCache          Property   System.Boolean UsePropertyCache {get;set;}
    Username                  Property   System.String Username {get;set;}
    Merci beaucoup pour ta patience

  4. #4
    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
    En recherchant sur du VBS je suis tombé sur ceci, ce qui différe est le mode d'appel.
    Ensuite on recherche sur MSDN ce qu'est "configurationNamingContext" :
    Returns the DN of the root of the config NC on this DC.

    Si on combine le tout (powershell configurationNamingContext dSHeuristics) la recherche sur google nous renvoi 2 résultats, le premier semble contenir la solution :
    http://my.safaribooksonline.com/9780...us_ldap_access

    Et il vaut mieux éviter de manipuler un objet directement par PSbase car dans ce cas on n'accéde plus aux propriétés ajoutées par le système de type de PowerShell (ETS), à moins d'appeler uniquement des membres de l'objet masqués par PS. De plus cela documente le code et en cas de modification des régles d'adaptation cela simplifie la maintenance.
    Dans la prochaine V2 ce sera le cas :
    Improvements in Windows PowerShell V2 …
    Updated Type Adapters: Member lookup algorithm for Type Adapters has been updated to include Base members. Members on the Base Object for Adapted types are now directly accessible on the object. This removes the need to use PSBASE property to access base members.
    voir aussi

  5. #5
    Membre expérimenté Avatar de berrichon
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 210
    Par défaut
    bon je remercie pour cette réponse. Je viens de me faire chauffer une verveine. J'ai chopper le bouquin de powershell guide de référence. J'avale les bases et ensuite je reviens à ton article. Parceque la pour l'instant je dois reconnaitre que je suis un petit peu léger sur le sujet. Donc je te donne rendez vous quand j'aurais tout absorber et je file la réponse.
    En tout les cas je te remercie encore une fois pour ton extreme patience.

  6. #6
    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
    Citation Envoyé par berrichon Voir le message
    J'ai chopper le bouquin de powershell guide de référence. J'avale les bases et ensuite je reviens à ton article.
    Je pense que c'est une sage décision mais tout est complexe lorsqu'on débute. J'allais te conseiller ce bouquin quant à l'article tu peux le placer sur la pile, tu auras certainement d'autres points à aborder auparavant.
    N'oublie pas le tag résolu si c'est le cas

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

Discussions similaires

  1. [XL-2010] TCD : modifier données directement dans le TCD
    Par anonymous9 dans le forum Excel
    Réponses: 2
    Dernier message: 09/03/2014, 02h34
  2. Réponses: 34
    Dernier message: 22/11/2010, 00h00
  3. Réponses: 16
    Dernier message: 17/11/2009, 14h14
  4. [AC-2000] Modification de données directement dans le corps d'un email
    Par tibogaet dans le forum IHM
    Réponses: 1
    Dernier message: 23/08/2009, 10h49
  5. Réponses: 6
    Dernier message: 15/02/2006, 14h02

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