Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb avec mon script VBS

1 réponse
Avatar
Vincent
Bonjour,

Je voudrais récuperer des clés de registre sur plusieurs machines et les
enregistrer dans un fichier texte. Les machines sont récupérées via AD comme
scripté ci-dessous. Dans mon fichier TXT, je récupére bien l'ensemble de mes
noms de machines, mais uniquement le registre local de la machine depuis
laquelle j'execute le script.
Quelqu'un pourrait-il m'aider ?
Merci d'avance

Vincent

Détail de mon script:

Const ADS_SCOPE_SUBTREE = 2
Const ForWriting = 2
Const ForAppending = 8

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set ObjTextFileCreate=objFSO.CreateTextFile("D:\Suffix.txt",true)
ToWrite1= "Computer Name;Current DNS Suffix;New DNS Suffix"
objTextFileCreate.writeline(ToWrite1)
objTextFileCreate.close

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Set objCOmmand.ActiveConnection = objConnection
objCommand.CommandText = _
"Select Name, Location from 'LDAP://dc=xxx,dc=yyy,dc=com' " _
& "Where objectClass='computer'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

Do Until objRecordSet.EOF
Set ws = WScript.CreateObject("WScript.Shell")

v=ws.RegRead("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Domain")
x=ws.RegRead("HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\NV
Domain")
ToWrite= objRecordSet.Fields("Name").Value & ";" & v & ";" & x
Set objTextFile = objFSO.OpenTextFile("D:\Suffix.txt", ForAppending)
objTextFileCreate.writeline(ToWrite)
objTextFileCreate.close
objRecordSet.MoveNext
Loop
objTextFile.close

1 réponse

Avatar
Thierry DEMAN [MVP]
Bonsoir,

dans l'instruction "RegRead" que tu utilises, je ne vois pas l'indication
d'un ordinateur distant !!!
l'objet "ws" crée un objet shell
Regread lit le registre local....

Il n'a aucune raison de lire une machine distante...

=> Utilise la syntaxe suivante computernamekeyname pour atteindre les
registres distants.

http://www.hiddensoft.com/autoit3/docs/functions/RegRead.htm

A bientôt,
--
Thierry DEMAN-BARCELÒ
MVP Exchange, SQL/Server
MCSE2003+M+S,MCSE+I,MCDBA
http://base.faqexchange.info
http://www.faqexchange.info
"Vincent" wrote in message
news:
Bonjour,

Je voudrais récuperer des clés de registre sur plusieurs machines et les
enregistrer dans un fichier texte. Les machines sont récupérées via AD
comme
scripté ci-dessous. Dans mon fichier TXT, je récupére bien l'ensemble de
mes
noms de machines, mais uniquement le registre local de la machine depuis
laquelle j'execute le script.
Quelqu'un pourrait-il m'aider ?
Merci d'avance

Vincent

Détail de mon script:

Const ADS_SCOPE_SUBTREE = 2
Const ForWriting = 2
Const ForAppending = 8

Set objFSO = CreateObject("Scripting.FileSystemObject")
Set ObjTextFileCreate=objFSO.CreateTextFile("D:Suffix.txt",true)
ToWrite1= "Computer Name;Current DNS Suffix;New DNS Suffix"
objTextFileCreate.writeline(ToWrite1)
objTextFileCreate.close

Set objConnection = CreateObject("ADODB.Connection")
Set objCommand = CreateObject("ADODB.Command")
objConnection.Provider = "ADsDSOObject"
objConnection.Open "Active Directory Provider"

Set objCOmmand.ActiveConnection = objConnection
objCommand.CommandText = _
"Select Name, Location from 'LDAP://dc=xxx,dc=yyy,dc=com' " _
& "Where objectClass='computer'"
objCommand.Properties("Page Size") = 1000
objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
Set objRecordSet = objCommand.Execute
objRecordSet.MoveFirst

Do Until objRecordSet.EOF
Set ws = WScript.CreateObject("WScript.Shell")

v=ws.RegRead("HKLMSYSTEMCurrentControlSetServicesTcpipParametersDomain")
x=ws.RegRead("HKLMSYSTEMCurrentControlSetServicesTcpipParametersNV
Domain")
ToWrite= objRecordSet.Fields("Name").Value & ";" & v & ";" & x
Set objTextFile = objFSO.OpenTextFile("D:Suffix.txt", ForAppending)
objTextFileCreate.writeline(ToWrite)
objTextFileCreate.close
objRecordSet.MoveNext
Loop
objTextFile.close