"Vincent" a écrit dans le message
de news:
[...]
| Non. J'exécute le script via une invite de commande (CSCRIPT
| monscript.vbs) et il reste planté sur "Processing Machine1 ... "
Pouvez-vous mettre en commentaire la ligne suivante de votre script :
On Error Resume Next
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" <Vincent@discussions.microsoft.com> a écrit dans le message
de news:799740D9-7BB8-48A1-BFF0-1F3042B4FB24@microsoft.com
[...]
| Non. J'exécute le script via une invite de commande (CSCRIPT
| monscript.vbs) et il reste planté sur "Processing Machine1 ... "
Pouvez-vous mettre en commentaire la ligne suivante de votre script :
On Error Resume Next
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" a écrit dans le message
de news:
[...]
| Non. J'exécute le script via une invite de commande (CSCRIPT
| monscript.vbs) et il reste planté sur "Processing Machine1 ... "
Pouvez-vous mettre en commentaire la ligne suivante de votre script :
On Error Resume Next
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" a écrit dans le message
de news:
[...]
| Bien joué ! -> permission denied, pourtant j'utilise un compte admin
| du domaine
|
| Et cependant, j'ai essayé cette commande qui passe correctement:
| objFSO.CopyFile "SetClassID.VBS" , "" & strComputer & "admin$"
Sous XP SP2 il est nécessaire de modifier un paramètre de stratégie sur
le poste maître (celui qui déclenche l'exécution du script
'setClassId.vbs' sur le poste distant) :
Lancez gpedit.msc sur le poste maître
Paramètres Windows
Paramètres de sécurité
Stratégies locales
Options de sécurité
DCOM: Restrictions d'accès ordinateur ...
ANONYMOUS LOGON
[x] Accès local
[x] Accès distant
>gpupdate /force
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" <Vincent@discussions.microsoft.com> a écrit dans le message
de news:73F6F3E1-8EBD-4035-BDAF-6C5C72382CD7@microsoft.com
[...]
| Bien joué ! -> permission denied, pourtant j'utilise un compte admin
| du domaine
|
| Et cependant, j'ai essayé cette commande qui passe correctement:
| objFSO.CopyFile "SetClassID.VBS" , "\" & strComputer & "admin$"
Sous XP SP2 il est nécessaire de modifier un paramètre de stratégie sur
le poste maître (celui qui déclenche l'exécution du script
'setClassId.vbs' sur le poste distant) :
Lancez gpedit.msc sur le poste maître
Paramètres Windows
Paramètres de sécurité
Stratégies locales
Options de sécurité
DCOM: Restrictions d'accès ordinateur ...
ANONYMOUS LOGON
[x] Accès local
[x] Accès distant
>gpupdate /force
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" a écrit dans le message
de news:
[...]
| Bien joué ! -> permission denied, pourtant j'utilise un compte admin
| du domaine
|
| Et cependant, j'ai essayé cette commande qui passe correctement:
| objFSO.CopyFile "SetClassID.VBS" , "" & strComputer & "admin$"
Sous XP SP2 il est nécessaire de modifier un paramètre de stratégie sur
le poste maître (celui qui déclenche l'exécution du script
'setClassId.vbs' sur le poste distant) :
Lancez gpedit.msc sur le poste maître
Paramètres Windows
Paramètres de sécurité
Stratégies locales
Options de sécurité
DCOM: Restrictions d'accès ordinateur ...
ANONYMOUS LOGON
[x] Accès local
[x] Accès distant
>gpupdate /force
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" a écrit dans le message
de news:
[...]
| Bien joué ! -> permission denied, pourtant j'utilise un compte admin
| du domaine
|
| Et cependant, j'ai essayé cette commande qui passe correctement:
| objFSO.CopyFile "SetClassID.VBS" , "" & strComputer & "admin$"
Sous XP SP2 il est nécessaire de modifier un paramètre de stratégie sur
le poste maître (celui qui déclenche l'exécution du script
'setClassId.vbs' sur le poste distant) :
Lancez gpedit.msc sur le poste maître
Paramètres Windows
Paramètres de sécurité
Stratégies locales
Options de sécurité
DCOM: Restrictions d'accès ordinateur ...
ANONYMOUS LOGON
[x] Accès local
[x] Accès distant
>gpupdate /force
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" <Vincent@discussions.microsoft.com> a écrit dans le message
de news:73F6F3E1-8EBD-4035-BDAF-6C5C72382CD7@microsoft.com
[...]
| Bien joué ! -> permission denied, pourtant j'utilise un compte admin
| du domaine
|
| Et cependant, j'ai essayé cette commande qui passe correctement:
| objFSO.CopyFile "SetClassID.VBS" , "\" & strComputer & "admin$"
Sous XP SP2 il est nécessaire de modifier un paramètre de stratégie sur
le poste maître (celui qui déclenche l'exécution du script
'setClassId.vbs' sur le poste distant) :
Lancez gpedit.msc sur le poste maître
Paramètres Windows
Paramètres de sécurité
Stratégies locales
Options de sécurité
DCOM: Restrictions d'accès ordinateur ...
ANONYMOUS LOGON
[x] Accès local
[x] Accès distant
>gpupdate /force
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" a écrit dans le message
de news:
[...]
| Bien joué ! -> permission denied, pourtant j'utilise un compte admin
| du domaine
|
| Et cependant, j'ai essayé cette commande qui passe correctement:
| objFSO.CopyFile "SetClassID.VBS" , "" & strComputer & "admin$"
Sous XP SP2 il est nécessaire de modifier un paramètre de stratégie sur
le poste maître (celui qui déclenche l'exécution du script
'setClassId.vbs' sur le poste distant) :
Lancez gpedit.msc sur le poste maître
Paramètres Windows
Paramètres de sécurité
Stratégies locales
Options de sécurité
DCOM: Restrictions d'accès ordinateur ...
ANONYMOUS LOGON
[x] Accès local
[x] Accès distant
>gpupdate /force
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" a écrit dans le message
de news:
[...]
| Bien joué ! -> permission denied, pourtant j'utilise un compte admin
| du domaine
|
| Et cependant, j'ai essayé cette commande qui passe correctement:
| objFSO.CopyFile "SetClassID.VBS" , "" & strComputer & "admin$"
Sous XP SP2 il est nécessaire de modifier un paramètre de stratégie sur
le poste maître (celui qui déclenche l'exécution du script
'setClassId.vbs' sur le poste distant) :
Lancez gpedit.msc sur le poste maître
Paramètres Windows
Paramètres de sécurité
Stratégies locales
Options de sécurité
DCOM: Restrictions d'accès ordinateur ...
ANONYMOUS LOGON
[x] Accès local
[x] Accès distant
>gpupdate /force
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" <Vincent@discussions.microsoft.com> a écrit dans le message
de news:73F6F3E1-8EBD-4035-BDAF-6C5C72382CD7@microsoft.com
[...]
| Bien joué ! -> permission denied, pourtant j'utilise un compte admin
| du domaine
|
| Et cependant, j'ai essayé cette commande qui passe correctement:
| objFSO.CopyFile "SetClassID.VBS" , "\" & strComputer & "admin$"
Sous XP SP2 il est nécessaire de modifier un paramètre de stratégie sur
le poste maître (celui qui déclenche l'exécution du script
'setClassId.vbs' sur le poste distant) :
Lancez gpedit.msc sur le poste maître
Paramètres Windows
Paramètres de sécurité
Stratégies locales
Options de sécurité
DCOM: Restrictions d'accès ordinateur ...
ANONYMOUS LOGON
[x] Accès local
[x] Accès distant
>gpupdate /force
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" a écrit dans le message
de news:
[...]
| Bien joué ! -> permission denied, pourtant j'utilise un compte admin
| du domaine
|
| Et cependant, j'ai essayé cette commande qui passe correctement:
| objFSO.CopyFile "SetClassID.VBS" , "" & strComputer & "admin$"
Sous XP SP2 il est nécessaire de modifier un paramètre de stratégie sur
le poste maître (celui qui déclenche l'exécution du script
'setClassId.vbs' sur le poste distant) :
Lancez gpedit.msc sur le poste maître
Paramètres Windows
Paramètres de sécurité
Stratégies locales
Options de sécurité
DCOM: Restrictions d'accès ordinateur ...
ANONYMOUS LOGON
[x] Accès local
[x] Accès distant
>gpupdate /force
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" a écrit dans le message
de news:
| Bonsoir Gilles,
Bonsoir Vincent,
| Pour faire suite à nos différents échanges, je vous confirme que les
| solutions que vous m'avez proposées m'ont permis de finaliser mon
| script concernant les postes XP, et je vous en remercie.
Merci pour ce retour.
[...]
| Si vous aviez la moindre idée pour contourner l'incompatibilté de
| NetConnectionID sur les postes W2000, j'en serais très heureux.
Comme vous pourrez le constater, dans le but visant à assurer la
compatibilité 2K/XP, il ne m'a pas été possible de (ou alors je n'ai pas
trouvé comment) continuer à m'appuyer sur les classes WMI pour récupérer
le nom des interfaces réseau et plus précisément le nom de l'interface
compatible avec l'outil ipconfig. La nouvelle technique utilisée
s'appuie sur la manipulation de la sortie de commande 'ipconfig /all'.
Cette sortie de commande est "localisée" et de plus dépendante de la
version du système d'exploitation. J'ai porté une attention particulière
à n'utiliser aucune référence locale Fr. Toutefois, j'attire votre
attention sur le fait que les kanji ou autres caractères cabalistiques
ne sont pas supportés :-)
Ci-dessous le script 'setClassId.vbs' testé sous W2K SP4 Fr, XP SP1/SP2
Fr
+++ Pré requis
WSH 5.6
-- Coupez ici : setClassId.vbs --
Option Explicit
' déclaration des variables
Dim oSh, oEx, oRe
Dim colNetCards
Dim strLines, strNetCard
'----------------------------------------------------------------------
' initialisation
Set oSh = CreateObject ("WScript.Shell")
set oRe = CreateObject ("VBScript.RegExp")
' préparation du pattern utilisé pour filtrer la sortie 'ipconfig'
oRe.Global = True
oRe.Pattern = "[^A-Za-z0-9 rnxFF]"
' recherche des interfaces réseau installées
' l'utilisation de l'expression régulière permet de ne pas "localiser"
' le script. Toutes les lignes correspondent à une interface réseau
Set oEx = oSh.Exec ("%comspec% /c ipconfig /all | findstr " & _
Chr (34) & "^[A-Z].*:$" & Chr (34))
' lecture du flux stdout
strLines = oEx.Stdout.ReadAll
' remplacement des caractères oem par '?'
' cela permet de s'affranchir de la conversion ansi en oem
' sachant que l'outil ipconfig supporte les caractères de remplacement
strLines = oRe.Replace (strLines, "?")
' découpage du flux stdout en lignes
' une ligne par interface
colNetCards = split (Left (strLines, Len (strLines) - 2), VBCrLf)
' énumération des interfaces réseau disponibles
For Each strNetCard In colNetCards
' lecture du nom complet de l'interface
strNetCard = Left (strNetCard, Len (strNetCard) - 2)
' le nom de l'interface se termine par le code ascii 255
' note : sous windows 2000 uniquement !
If Right (strNetCard, 1) = Chr (255) Then _
strNetCard = Left (strNetCard, Len (strNetCard) - 1)
' extraction du nom de l'interface (compatible ipconfig)
strNetCard = Mid (strNetCard, InStr ( _
InStr (strNetCard, " ") + 1, strNetCard, " ") + 1)
' début du traitement
WScript.Echo "Processing [" & strNetCard & "] ..."
' modification de la classe dhcp
oSh.Run "ipconfig /setclassid " & _
Chr (34) & strNetCard & Chr (34) & " " & "MyClassId", 0, True
' renouvellement du bail
oSh.Run "ipconfig /renew " & _
Chr (34) & strAdapterName & Chr (34), 0, True
Next
-- Coupez ici : setClassId.vbs --
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" <Vincent@discussions.microsoft.com> a écrit dans le message
de news:A6A1068D-7B72-4A65-A56E-46D3E1373A84@microsoft.com
| Bonsoir Gilles,
Bonsoir Vincent,
| Pour faire suite à nos différents échanges, je vous confirme que les
| solutions que vous m'avez proposées m'ont permis de finaliser mon
| script concernant les postes XP, et je vous en remercie.
Merci pour ce retour.
[...]
| Si vous aviez la moindre idée pour contourner l'incompatibilté de
| NetConnectionID sur les postes W2000, j'en serais très heureux.
Comme vous pourrez le constater, dans le but visant à assurer la
compatibilité 2K/XP, il ne m'a pas été possible de (ou alors je n'ai pas
trouvé comment) continuer à m'appuyer sur les classes WMI pour récupérer
le nom des interfaces réseau et plus précisément le nom de l'interface
compatible avec l'outil ipconfig. La nouvelle technique utilisée
s'appuie sur la manipulation de la sortie de commande 'ipconfig /all'.
Cette sortie de commande est "localisée" et de plus dépendante de la
version du système d'exploitation. J'ai porté une attention particulière
à n'utiliser aucune référence locale Fr. Toutefois, j'attire votre
attention sur le fait que les kanji ou autres caractères cabalistiques
ne sont pas supportés :-)
Ci-dessous le script 'setClassId.vbs' testé sous W2K SP4 Fr, XP SP1/SP2
Fr
+++ Pré requis
WSH 5.6
-- Coupez ici : setClassId.vbs --
Option Explicit
' déclaration des variables
Dim oSh, oEx, oRe
Dim colNetCards
Dim strLines, strNetCard
'----------------------------------------------------------------------
' initialisation
Set oSh = CreateObject ("WScript.Shell")
set oRe = CreateObject ("VBScript.RegExp")
' préparation du pattern utilisé pour filtrer la sortie 'ipconfig'
oRe.Global = True
oRe.Pattern = "[^A-Za-z0-9 rnxFF]"
' recherche des interfaces réseau installées
' l'utilisation de l'expression régulière permet de ne pas "localiser"
' le script. Toutes les lignes correspondent à une interface réseau
Set oEx = oSh.Exec ("%comspec% /c ipconfig /all | findstr " & _
Chr (34) & "^[A-Z].*:$" & Chr (34))
' lecture du flux stdout
strLines = oEx.Stdout.ReadAll
' remplacement des caractères oem par '?'
' cela permet de s'affranchir de la conversion ansi en oem
' sachant que l'outil ipconfig supporte les caractères de remplacement
strLines = oRe.Replace (strLines, "?")
' découpage du flux stdout en lignes
' une ligne par interface
colNetCards = split (Left (strLines, Len (strLines) - 2), VBCrLf)
' énumération des interfaces réseau disponibles
For Each strNetCard In colNetCards
' lecture du nom complet de l'interface
strNetCard = Left (strNetCard, Len (strNetCard) - 2)
' le nom de l'interface se termine par le code ascii 255
' note : sous windows 2000 uniquement !
If Right (strNetCard, 1) = Chr (255) Then _
strNetCard = Left (strNetCard, Len (strNetCard) - 1)
' extraction du nom de l'interface (compatible ipconfig)
strNetCard = Mid (strNetCard, InStr ( _
InStr (strNetCard, " ") + 1, strNetCard, " ") + 1)
' début du traitement
WScript.Echo "Processing [" & strNetCard & "] ..."
' modification de la classe dhcp
oSh.Run "ipconfig /setclassid " & _
Chr (34) & strNetCard & Chr (34) & " " & "MyClassId", 0, True
' renouvellement du bail
oSh.Run "ipconfig /renew " & _
Chr (34) & strAdapterName & Chr (34), 0, True
Next
-- Coupez ici : setClassId.vbs --
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" a écrit dans le message
de news:
| Bonsoir Gilles,
Bonsoir Vincent,
| Pour faire suite à nos différents échanges, je vous confirme que les
| solutions que vous m'avez proposées m'ont permis de finaliser mon
| script concernant les postes XP, et je vous en remercie.
Merci pour ce retour.
[...]
| Si vous aviez la moindre idée pour contourner l'incompatibilté de
| NetConnectionID sur les postes W2000, j'en serais très heureux.
Comme vous pourrez le constater, dans le but visant à assurer la
compatibilité 2K/XP, il ne m'a pas été possible de (ou alors je n'ai pas
trouvé comment) continuer à m'appuyer sur les classes WMI pour récupérer
le nom des interfaces réseau et plus précisément le nom de l'interface
compatible avec l'outil ipconfig. La nouvelle technique utilisée
s'appuie sur la manipulation de la sortie de commande 'ipconfig /all'.
Cette sortie de commande est "localisée" et de plus dépendante de la
version du système d'exploitation. J'ai porté une attention particulière
à n'utiliser aucune référence locale Fr. Toutefois, j'attire votre
attention sur le fait que les kanji ou autres caractères cabalistiques
ne sont pas supportés :-)
Ci-dessous le script 'setClassId.vbs' testé sous W2K SP4 Fr, XP SP1/SP2
Fr
+++ Pré requis
WSH 5.6
-- Coupez ici : setClassId.vbs --
Option Explicit
' déclaration des variables
Dim oSh, oEx, oRe
Dim colNetCards
Dim strLines, strNetCard
'----------------------------------------------------------------------
' initialisation
Set oSh = CreateObject ("WScript.Shell")
set oRe = CreateObject ("VBScript.RegExp")
' préparation du pattern utilisé pour filtrer la sortie 'ipconfig'
oRe.Global = True
oRe.Pattern = "[^A-Za-z0-9 rnxFF]"
' recherche des interfaces réseau installées
' l'utilisation de l'expression régulière permet de ne pas "localiser"
' le script. Toutes les lignes correspondent à une interface réseau
Set oEx = oSh.Exec ("%comspec% /c ipconfig /all | findstr " & _
Chr (34) & "^[A-Z].*:$" & Chr (34))
' lecture du flux stdout
strLines = oEx.Stdout.ReadAll
' remplacement des caractères oem par '?'
' cela permet de s'affranchir de la conversion ansi en oem
' sachant que l'outil ipconfig supporte les caractères de remplacement
strLines = oRe.Replace (strLines, "?")
' découpage du flux stdout en lignes
' une ligne par interface
colNetCards = split (Left (strLines, Len (strLines) - 2), VBCrLf)
' énumération des interfaces réseau disponibles
For Each strNetCard In colNetCards
' lecture du nom complet de l'interface
strNetCard = Left (strNetCard, Len (strNetCard) - 2)
' le nom de l'interface se termine par le code ascii 255
' note : sous windows 2000 uniquement !
If Right (strNetCard, 1) = Chr (255) Then _
strNetCard = Left (strNetCard, Len (strNetCard) - 1)
' extraction du nom de l'interface (compatible ipconfig)
strNetCard = Mid (strNetCard, InStr ( _
InStr (strNetCard, " ") + 1, strNetCard, " ") + 1)
' début du traitement
WScript.Echo "Processing [" & strNetCard & "] ..."
' modification de la classe dhcp
oSh.Run "ipconfig /setclassid " & _
Chr (34) & strNetCard & Chr (34) & " " & "MyClassId", 0, True
' renouvellement du bail
oSh.Run "ipconfig /renew " & _
Chr (34) & strAdapterName & Chr (34), 0, True
Next
-- Coupez ici : setClassId.vbs --
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" a écrit dans le message
de news:
| Bonjour Gilles ,
Bonjour Vincent,
| C'est nickel çà fonctionne super bien, merci mille fois pour votre
| disponibilité et efficacité !!
C'est super ;-)
[...]
| Cependant, pour modifier un attribut, il
| faut spécifier le DistinguishedName (ne va pas chercher dans les sous
| OU). Y a t'il un moyen de spécifier 2 chemins LDAP ? Ma requete
| initiale porte sur une OU "Workstations" qui contient les OU
| "Desktops" et "Laptops".
La solution consiste à rechercher l'objet Computer dans l'annuaire
Active Directory dans le but de récupérer le DN. Ensuite il suffira
simplement d'utiliser le DN pour mettre à jour l'attribut de l'objet. Le
script VBScript ci-dessous recherche le compte d'ordinateur strComputer
puis met à jour son attribut 'info'. L'objet Computer est recherché à
partir de la racine de l'annuaire.
-- Coupez ici : setInfo.vbs --
Option Explicit
' déclaration des variables
Dim oConn, oRS, oComputer
Dim strComputer
' initialisation
Set oConn = CreateObject ("ADODB.Connection")
oConn.Open "ProvidersDSOObject;"
' recherche du compte d'ordinateur dans l'annuaire
WScript.Echo "Searching for " & strComputer & " ..."
' exécution de la requête ldap
' Serverless binding via rootDse
set oRS = oConn.Execute ("<LDAP://" & _
getObject("LDAP://rootDse"). _
get("defaultNamingContext") & ">;" & _
"(&(objectCategory=Computer)" & _
"(samAccountName=" & strComputer & "$" & ")" & _
");distinguishedname;subtree")
' évaluation du traitement
If Not oRS.EOF Then
' le compte d'ordinateur a été trouvé
WScript.Echo "Found DN=" & oRS.Fields("distinguishedname")
' mise à jour de l'attribut 'info'
Set oComputer = GetObject ("LDAP://" & _
oRS.Fields("distinguishedname"))
oComputer.Put "info", "VEOLIA-ES"
oComputer.SetInfo
End If
-- Coupez ici : setInfo.vbs --
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" <Vincent@discussions.microsoft.com> a écrit dans le message
de news:8BEA29FD-CDED-4D11-B137-A061E8861576@microsoft.com
| Bonjour Gilles ,
Bonjour Vincent,
| C'est nickel çà fonctionne super bien, merci mille fois pour votre
| disponibilité et efficacité !!
C'est super ;-)
[...]
| Cependant, pour modifier un attribut, il
| faut spécifier le DistinguishedName (ne va pas chercher dans les sous
| OU). Y a t'il un moyen de spécifier 2 chemins LDAP ? Ma requete
| initiale porte sur une OU "Workstations" qui contient les OU
| "Desktops" et "Laptops".
La solution consiste à rechercher l'objet Computer dans l'annuaire
Active Directory dans le but de récupérer le DN. Ensuite il suffira
simplement d'utiliser le DN pour mettre à jour l'attribut de l'objet. Le
script VBScript ci-dessous recherche le compte d'ordinateur strComputer
puis met à jour son attribut 'info'. L'objet Computer est recherché à
partir de la racine de l'annuaire.
-- Coupez ici : setInfo.vbs --
Option Explicit
' déclaration des variables
Dim oConn, oRS, oComputer
Dim strComputer
' initialisation
Set oConn = CreateObject ("ADODB.Connection")
oConn.Open "ProvidersDSOObject;"
' recherche du compte d'ordinateur dans l'annuaire
WScript.Echo "Searching for " & strComputer & " ..."
' exécution de la requête ldap
' Serverless binding via rootDse
set oRS = oConn.Execute ("<LDAP://" & _
getObject("LDAP://rootDse"). _
get("defaultNamingContext") & ">;" & _
"(&(objectCategory=Computer)" & _
"(samAccountName=" & strComputer & "$" & ")" & _
");distinguishedname;subtree")
' évaluation du traitement
If Not oRS.EOF Then
' le compte d'ordinateur a été trouvé
WScript.Echo "Found DN=" & oRS.Fields("distinguishedname")
' mise à jour de l'attribut 'info'
Set oComputer = GetObject ("LDAP://" & _
oRS.Fields("distinguishedname"))
oComputer.Put "info", "VEOLIA-ES"
oComputer.SetInfo
End If
-- Coupez ici : setInfo.vbs --
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD
"Vincent" a écrit dans le message
de news:
| Bonjour Gilles ,
Bonjour Vincent,
| C'est nickel çà fonctionne super bien, merci mille fois pour votre
| disponibilité et efficacité !!
C'est super ;-)
[...]
| Cependant, pour modifier un attribut, il
| faut spécifier le DistinguishedName (ne va pas chercher dans les sous
| OU). Y a t'il un moyen de spécifier 2 chemins LDAP ? Ma requete
| initiale porte sur une OU "Workstations" qui contient les OU
| "Desktops" et "Laptops".
La solution consiste à rechercher l'objet Computer dans l'annuaire
Active Directory dans le but de récupérer le DN. Ensuite il suffira
simplement d'utiliser le DN pour mettre à jour l'attribut de l'objet. Le
script VBScript ci-dessous recherche le compte d'ordinateur strComputer
puis met à jour son attribut 'info'. L'objet Computer est recherché à
partir de la racine de l'annuaire.
-- Coupez ici : setInfo.vbs --
Option Explicit
' déclaration des variables
Dim oConn, oRS, oComputer
Dim strComputer
' initialisation
Set oConn = CreateObject ("ADODB.Connection")
oConn.Open "ProvidersDSOObject;"
' recherche du compte d'ordinateur dans l'annuaire
WScript.Echo "Searching for " & strComputer & " ..."
' exécution de la requête ldap
' Serverless binding via rootDse
set oRS = oConn.Execute ("<LDAP://" & _
getObject("LDAP://rootDse"). _
get("defaultNamingContext") & ">;" & _
"(&(objectCategory=Computer)" & _
"(samAccountName=" & strComputer & "$" & ")" & _
");distinguishedname;subtree")
' évaluation du traitement
If Not oRS.EOF Then
' le compte d'ordinateur a été trouvé
WScript.Echo "Found DN=" & oRS.Fields("distinguishedname")
' mise à jour de l'attribut 'info'
Set oComputer = GetObject ("LDAP://" & _
oRS.Fields("distinguishedname"))
oComputer.Put "info", "VEOLIA-ES"
oComputer.SetInfo
End If
-- Coupez ici : setInfo.vbs --
--
Gilles LAURENT
Me contacter : http://cerbermail.com/?zoTY7ZkLcD