retrodude
Goto Top

Problem in VBS Script

Hallo

Ich möchte mit folgendem VBS-Script die Registry unserer Clients nach dem Vorhandensein eines gewissen Werts überprüfen und diese gegebenenfalls mutieren. Die Suchfunktion funktioniert, nur die Befehle für die Schreib bzw. Löschvorgänge scheitern. Kann mir jemand sagen was in dem Teil noch nicht stimmt? Das Script scheitert bei der Variablendeklaration auf der 3. Zeile, welche für die Kommandos in der IF Schleife gilt. Was mache ich falsch?


Const HKEY_LOCAL_MACHINE = &H80000002

Dim WSHShell As Object
Set WSHShell = CreateObject ("WScript.Shell")

strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & _
strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Network Associates\ePolicy Orchestrator\Agent"
strValueName = "MOD"
objRegistry.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue


If IsNull(strValue) Then
Wscript.Echo "MCAfee ID ist unmodifiziert.(Key nicht vorhanden)"

WshShell.RegWrite "SOFTWARE\Network Associates\ePolicy Orchestrator\Agent", "MOD" , "REG_SZ" , "Dummykey"
WshShell.RegDelete "SOFTWARE\Network Associates\ePolicy Orchestrator\Agent", "AgentGUID"
Else
Wscript.Echo "MCAfee ID ist modifiziert. (Key vorhanden)"
End If


Vielen Dank im Voraus!

Content-ID: 91735

Url: https://administrator.de/contentid/91735

Ausgedruckt am: 26.11.2024 um 08:11 Uhr

Logan000
Logan000 10.07.2008 um 12:17:34 Uhr
Goto Top
Moin

Du kannst in vbs keine Variablentypen deklarieren.
Versuchs so:
Const HKEY_LOCAL_MACHINE = &H80000002
Dim WSHShell 
Set WSHShell = CreateObject ("WScript.Shell")  
strComputer = "."  
...

Gruß L.
RetroDude
RetroDude 10.07.2008 um 12:44:14 Uhr
Goto Top
Danke! Nun habe ich noch ein weiteres Problem. Er meckert auch noch bei der WshShell.RegWrite Zeile. "Falsche Anzahl an Argumenten oder ungültige Eigenschaftszuweisung 'RegWrite' Code 800A01C2 " Ich möchte mit diesen Befehlen die Registry der Clients modifizieren. Was mache ich da noch falsch?
Gruss

angepasster Code:
Const HKEY_LOCAL_MACHINE = &H80000002

Dim WSHShell
Set WSHShell = CreateObject ("WScript.Shell")

strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & _
strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Network Associates\ePolicy Orchestrator\Agent"
strValueName = "MOD"
objRegistry.GetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue


If IsNull(strValue) Then
Wscript.Echo "MCAfee ID ist unmodifiziert.(Key nicht vorhanden)"

WshShell.RegWrite "SOFTWARE\Network Associates\ePolicy Orchestrator\Agent", "MOD" , "REG_SZ" , "Dummykey VOL-GS-IT"
WshShell.RegDelete "SOFTWARE\Network Associates\ePolicy Orchestrator\Agent", "AgentGUID"
Else
Wscript.Echo "MCAfee ID ist modifiziert. (Key vorhanden)"
End If
Logan000
Logan000 10.07.2008 um 14:00:42 Uhr
Goto Top
Also 1.
So solten die Zeilen RegRead und RegWrite funktionieren
..
WshShell.RegWrite "HKML\SOFTWARE\Network Associates\ePolicy Orchestrator\Agent\MOD","Dummykey"  
WshShell.RegDelete "HKML\SOFTWARE\Network Associates\ePolicy Orchestrator\Agent\AgentGUID"   
...

2. Diese ändern die lokale Registry.
Also die registry des jeweiligen Clients auf dem das Skript gerade ausgefürt wird.
Willst Du also das Skript lokal ausführen und remote auf einem Client die Reg. bearbeits solte das so aussehen: (ungetestet)
..
objRegistry.SetStringValue HKEY_LOCAL_MACHINE,"SOFTWARE\Network Associates\ePolicy Orchestrator\Agent\","MOD","Dummykey"  
objRegistry.DeleteValue HKEY_LOCAL_MACHINE,"SOFTWARE\Network Associates\ePolicy Orchestrator\Agent\","AgentGUID"  
...

Diese Seite dürfte dir weiterhelfen: http://www.microsoft.com/technet/scriptcenter/scripts/os/registry/defau ...

Gruß L.
RetroDude
RetroDude 10.07.2008 um 14:11:55 Uhr
Goto Top
Danke, habs doch noch rausgefunden. Verwende Variante 2. Dies funktioniert lokal. Nur noch ne kleine Frage. Was bedeutet der Punkt in strComputer = "." ? Verweist dies auf localhost? Kann ich den durch Hostnamen ersetzen und so den Script remote einsetzen?

Vielen Dank soweit!

Gruss
Logan000
Logan000 10.07.2008 um 14:27:23 Uhr
Goto Top
Was bedeutet der Punkt in strComputer = "." ? Verweist dies auf localhost?
Ja.
Kann ich den durch Hostnamen ersetzen und so den Script remote einsetzen?
Ja.

Gruß L.