Konfigurieren eines Dienstes per Script mit WMI oder WSH
Hallo,
ich bin etwas am verzweifeln da mir google nicht so ganz die Antworten ausgibt die ich mir so vorstelle bzw. mit denen ich arbeiten kann.
Zudem bin ich erst seit knapp 2 Wochen dabei mir etwas mehr über das Scripten beizubringen - also bitte nehmt etwas Rücksicht auf meine nunja teilweise unbedarfte Fragestellung.
Ich bin dabei ein Script mit WSH/WMI für eine automatische Installation eines Programms zu erstellen.
Wenn es relevant ist das Programm ist der DBInventor Standalone Client von Mechworks.
Das Installationsprogramm, welches aus einer *.msi besteht, habe ich schon meinen wünschen entsprechend der Installationsroutine angepasst.
Des weiteren habe ich das Script schon soweit das es mir das Programm automatisch installiert, danach dann die Registryeinträge für die Datenbank erstellt und anschließend den Lizenzdienst installiert.
Soweit sogut.
Mein Problem ist nun allerdings das nach der Installation des Dienstes dieser
1. Nicht gestartet ist
2. die Startbedingung auf manuell steht
3. das lokale Anmeldekonto als Startkonto benutzt wird.
Ich möchte aber gern folgendes Realisieren:
1. Der Dienst soll auf die Startbedingung "Automatisch" gestellt werden
2. Das Anmeldekonto soll wie folgt aussehen (Domäne\Administrator, Passwort: XXXXXXX)
3. der Dienst soll gestartet werden
Den Punkt 1. und tweilweise den Punkt 2. habe ich schon mit folgendem Programmcode hinbekommen.
wsh.RegWrite "HKLM\System\CurrentControlSet\Services\DBWServer\Start", 2, "REG_DWORD"
wsh.RegWrite "HKLM\System\CurrentControlSet\Services\DBWServer\Objectname", "domäne\administrator"
Was mir jetzt aber fehlt ist folgendes:
1. Möchte ich gern per Script das Passwort für die Anmeldung hinterlegen
2. Möchte ich den Dienst direkt aus dem Script raus starten
Wie man Dienste startet habe ich schon mehrfach über Google gefunden. Wie man allerdings die Benutzerdaten hinterlegt da scheiden sich die Geister - oder ich bin einfach zu doof das zu verstehen was mir google da ausgibt *g*.
Entscheidend für eine Antwort ist vielleicht zu wissen das ich kein Programmierer bin und mich auch bisher nicht weiter mit Programmierung auseinander gesetzt habe.
ich bin etwas am verzweifeln da mir google nicht so ganz die Antworten ausgibt die ich mir so vorstelle bzw. mit denen ich arbeiten kann.
Zudem bin ich erst seit knapp 2 Wochen dabei mir etwas mehr über das Scripten beizubringen - also bitte nehmt etwas Rücksicht auf meine nunja teilweise unbedarfte Fragestellung.
Ich bin dabei ein Script mit WSH/WMI für eine automatische Installation eines Programms zu erstellen.
Wenn es relevant ist das Programm ist der DBInventor Standalone Client von Mechworks.
Das Installationsprogramm, welches aus einer *.msi besteht, habe ich schon meinen wünschen entsprechend der Installationsroutine angepasst.
Des weiteren habe ich das Script schon soweit das es mir das Programm automatisch installiert, danach dann die Registryeinträge für die Datenbank erstellt und anschließend den Lizenzdienst installiert.
Soweit sogut.
Mein Problem ist nun allerdings das nach der Installation des Dienstes dieser
1. Nicht gestartet ist
2. die Startbedingung auf manuell steht
3. das lokale Anmeldekonto als Startkonto benutzt wird.
Ich möchte aber gern folgendes Realisieren:
1. Der Dienst soll auf die Startbedingung "Automatisch" gestellt werden
2. Das Anmeldekonto soll wie folgt aussehen (Domäne\Administrator, Passwort: XXXXXXX)
3. der Dienst soll gestartet werden
Den Punkt 1. und tweilweise den Punkt 2. habe ich schon mit folgendem Programmcode hinbekommen.
wsh.RegWrite "HKLM\System\CurrentControlSet\Services\DBWServer\Start", 2, "REG_DWORD"
wsh.RegWrite "HKLM\System\CurrentControlSet\Services\DBWServer\Objectname", "domäne\administrator"
Was mir jetzt aber fehlt ist folgendes:
1. Möchte ich gern per Script das Passwort für die Anmeldung hinterlegen
2. Möchte ich den Dienst direkt aus dem Script raus starten
Wie man Dienste startet habe ich schon mehrfach über Google gefunden. Wie man allerdings die Benutzerdaten hinterlegt da scheiden sich die Geister - oder ich bin einfach zu doof das zu verstehen was mir google da ausgibt *g*.
Entscheidend für eine Antwort ist vielleicht zu wissen das ich kein Programmierer bin und mich auch bisher nicht weiter mit Programmierung auseinander gesetzt habe.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 203992
Url: https://administrator.de/contentid/203992
Ausgedruckt am: 23.11.2024 um 14:11 Uhr
8 Kommentare
Neuester Kommentar
Folgende Batch-Befehle sollte dir helfen:
Beim sc-Befehl ist das Leerzeichen hinter den Gleichheits-Zeichen zu beachten!
http://technet.microsoft.com/de-de/library/cc990290(v=ws.10).aspx
das ganze dann in VBS:
Gruss Uwe
Beim sc-Befehl ist das Leerzeichen hinter den Gleichheits-Zeichen zu beachten!
sc config Service obj= "Domain\User" password= "xxxxxx" start= "auto"
net start Service
das ganze dann in VBS:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "sc.exe config Service obj= " & chr(34) & "Domain\User" & chr(34) & " password= " & chr(34) & "xxxxxx" & " start= " & chr(34) & "auto" & chr(34)
WshShell.Run "net.exe start Service"
Gruss Uwe
Per VBS und WMI kannst du dies folgendermasser machen:
In Zeile 3 musst du noch den Dienstnamen ändern und die Benutzerdaten für den Service in Zeile 6.
Wenn du willst das der Dienst mit Systemrechten läuft musst du Zeile 6 wie folget ändern:
Zur Info: Ein Programm in dem viele Snippets für die Programmierung mit WMI und VBS enthalten sind ist VBSEdit
Grüße Uwe
In Zeile 3 musst du noch den Dienstnamen ändern und die Benutzerdaten für den Service in Zeile 6.
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colServices = objWMIService.ExecQuery("SELECT * FROM Win32_Service WHERE Name = 'DBWServer'")
For Each objService In colServices
errServiceChange = objService.Change(,,,,"Automatic",,"Domain\User","DeinPassword")
if errServiceChange = 0 then
wscript.echo "Service erfolgreich geändert!"
else
wscript.echo "Serviceänderung fehlgeschlagen, Fehlercode:" & errServiceChange
end if
errServiceStart = objService.StartService()
Next
Wenn du willst das der Dienst mit Systemrechten läuft musst du Zeile 6 wie folget ändern:
errServiceChange = objService.Change(,,,,"Automatic",,"LocalSystem","")
Zur Info: Ein Programm in dem viele Snippets für die Programmierung mit WMI und VBS enthalten sind ist VBSEdit
Grüße Uwe
Habe die Fehler oben korrigiert. Die Parameterreihenfolge war nicht mehr ganz aktuell und "Auto" muss "Automatic" heißen.
Habe noch eine Fehlerabfrage mit eingebaut.
Die Fehlercodes die die Change()-Methode zurückgeben kann sind folgende:
Habe noch eine Fehlerabfrage mit eingebaut.
Die Fehlercodes die die Change()-Methode zurückgeben kann sind folgende:
0 Success
1 Not Supported
2 Access Denied
3 Dependent Services Running
4 Invalid Service Control
5 Service Cannot Accept Control
6 Service Not Active
7 Service Request Timeout
8 Unknown Failure
9 Path Not Found
10 Service Already Running
11 Service Database Locked
12 Service Dependency Deleted
13 Service Dependency Failure
14 Service Disabled
15 Service Logon Failure
16 Service Marked For Deletion
17 Service No Thread
18 Status Circular Dependency
19 Status Duplicate Name
20 Status Invalid Name
21 Status Invalid Parameter
22 Status Invalid Service Account
23 Status Service Exists
24 Service Already Paused
Dazu nehme man das Tool NTRIGHTS aus dem NT Ressource Kit und führen folgende Befehlszeile aus.
oder folge dieser Anleitung für das Tool Security Configuration Tool Set
http://technet.microsoft.com/en-us/library/bb742512.aspx
und hier
http://social.technet.microsoft.com/Forums/en-US/winserverGP/thread/bf5 ...
Grüße Uwe
ntrights.exe -u domain\domain-user +r SeServiceLogonRight
oder folge dieser Anleitung für das Tool Security Configuration Tool Set
http://technet.microsoft.com/en-us/library/bb742512.aspx
und hier
http://social.technet.microsoft.com/Forums/en-US/winserverGP/thread/bf5 ...
Grüße Uwe