Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Konfigurieren eines Dienstes per Script mit WMI oder WSH

Frage Entwicklung Batch & Shell

Mitglied: Robbe83

Robbe83 (Level 1) - Jetzt verbinden

26.03.2013, aktualisiert 27.03.2013, 2820 Aufrufe, 8 Kommentare

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.
Mitglied: colinardo
26.03.2013, aktualisiert um 16:26 Uhr
Folgende Batch-Befehle sollte dir helfen:
Beim sc-Befehl ist das Leerzeichen hinter den Gleichheits-Zeichen zu beachten!
01.
sc config  Service obj= "Domain\User" password= "xxxxxx" start= "auto" 
02.
net start Service
http://technet.microsoft.com/de-de/library/cc990290(v=ws.10).aspx

das ganze dann in VBS:
01.
Set WshShell = WScript.CreateObject("WScript.Shell") 
02.
WshShell.Run "sc.exe config Service obj= " & chr(34) & "Domain\User"  & chr(34) & " password= " & chr(34) & "xxxxxx" & " start= " & chr(34) & "auto" & chr(34) 
03.
WshShell.Run "net.exe start Service"
Gruss Uwe
Bitte warten ..
Mitglied: Robbe83
26.03.2013 um 16:25 Uhr
Damit habe ich es schon versucht.

Das Problem daran ist nur das es zwar den Starttyp ändert und die Benutzerdaten hinterlegt bzw. auch versucht den Dienst zu starten.

Nur kommt beim Batchaufruf der Fehler das dass Starten des Dienstes wegen falscher Anmeldedaten nicht ausgeführt werden konnte.

Wenn ich dann hingehe und manuell das Passwort oder auch nur den gleichen Benutzernamen eingebe (per Hand) - erst dann funktioniert das ganze.

Eine Idee woran das liegen könnte?

Problem an der batch ist auch das ich das Passwort unverschlüsselt und gut lesbar in der batch stehen habe - was ich eigentlich vermeiden möchte.

Ein erstelltes WSH Script könnte ich verschlüsseln lassen, so das es nicht mehr für die normalen User hier in der Firma lesbar ist.

Deswegen würde mich stark eine Lösung über WSH bzw. WMI interessieren.

Mfg

Robert
Bitte warten ..
Mitglied: colinardo
26.03.2013, aktualisiert 27.03.2013
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.
01.
strComputer = "." 
02.
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") 
03.
Set colServices = objWMIService.ExecQuery("SELECT * FROM Win32_Service WHERE Name = 'DBWServer'") 
04.
 
05.
For Each objService In colServices 
06.
    errServiceChange = objService.Change(,,,,"Automatic",,"Domain\User","DeinPassword") 
07.
    if errServiceChange = 0 then 
08.
      wscript.echo "Service erfolgreich geändert!" 
09.
    else 
10.
      wscript.echo "Serviceänderung fehlgeschlagen, Fehlercode:" & errServiceChange 
11.
    end if 
12.
    errServiceStart = objService.StartService()   
13.
Next
Wenn du willst das der Dienst mit Systemrechten läuft musst du Zeile 6 wie folget ändern:
01.
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
Bitte warten ..
Mitglied: Robbe83
27.03.2013, aktualisiert um 09:09 Uhr
Moin,

erstmal Danke für die schnellen Antworten.

Ich habe grade mal die zweite Möglichkeit direkt per WMI getestet und komme aber leider nur zu foldenem Ergebnis.

Und zwar schreibt er mir das der Typ in Zeile 6 nicht passt - sprich er hat ein Problem mit
"...
errServiceChange = objService.Change( , , , , ,"Auto" , "Domain\User" , "DeinPassword")
..."

das "errServiceChange" passt ihm da nicht.

Eine Idee woran das liegen könnte?

Mfg

Robert

EDIT:

Also es funktioniert jetzt so halbwegs.

Hab bei ( , , , , , "Auto".....) noch ein "," eingefügt und so startet er zumindestens dann schonmal den Dienst und meldet keinen Fehler mehr.

Allerdings findet der Ausdruck "errServiceChange" dann keinerlei Beachtung mehr.

Die "," sind Platzhalter richtig? - Kann es ev. sein das die Konstellation der Platzhalter anders verlaufen muss?
Bitte warten ..
Mitglied: colinardo
27.03.2013, aktualisiert um 09:29 Uhr
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:
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
Bitte warten ..
Mitglied: Robbe83
27.03.2013 um 10:07 Uhr
Moin,

also jetzt funktioniert es endlich.

Das Problem das der Dienst nicht starten kann besteht aber immernoch.

Habe nun herrausgefunden das dass Problem darin besteht, das wenn ich die Benutzerdaten nochmal erneut eingebe -
Windows dem Konto das Recht "als Dienst anmelden" einräumt.

Erst danach kann der Dienst mit den Benutzerdaten ordentlich gestaret werden.

Gibt es da eine Möglichkeit gleich im Script dem Benutzerkonto dieses Recht einzuräumen??

Mfg

Robert
Bitte warten ..
Mitglied: colinardo
27.03.2013, aktualisiert um 10:28 Uhr
Dazu nehme man das Tool NTRIGHTS aus dem NT Ressource Kit und führen folgende Befehlszeile aus.
01.
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
Bitte warten ..
Mitglied: Robbe83
27.03.2013 um 13:21 Uhr
Sooo...

.. also das Script funktioniert jetzt perfekt. Die Installation läuft ohne Fehler durch, der Dienst startet ohne Probleme und das ganze Programm läuft einwandfrei!

Danke dir für deine kompetente und vorallem sehr schnelle Hilfe.

Mfg

Robert
Bitte warten ..
Ähnliche Inhalte
Windows Systemdateien
Windows 7 und 10 herunterfahren Knopf mit Script belegen (21)

Frage von c-o-o-p-e-r92 zum Thema Windows Systemdateien ...

Backup
gelöst Backup-Script erweitern mit automatischer bereinigung (6)

Frage von DarkHercules zum Thema Backup ...

Netzwerkmanagement
gelöst Neue Cisco Switche im Netzwerk ermitteln um diese zu konfigurieren (9)

Frage von WinLiCLI zum Thema Netzwerkmanagement ...

Batch & Shell
gelöst Hilfe Bei einem vbs Script (19)

Frage von Hattori-Hanzo zum Thema Batch & Shell ...

Neue Wissensbeiträge
Drucker und Scanner

Samsung SL-M4025ND, firmware update und (kompatible) Tonerkassetten

(1)

Erfahrungsbericht von markus-1969 zum Thema Drucker und Scanner ...

Router & Routing

PfSense auf Supermicro Intel Xeon D-15x8 SoC Bare Bone

Tipp von Dobby zum Thema Router & Routing ...

Windows Server

Exchange 2010 auf Windows Server 2016 und AD

(2)

Tipp von Herbrich19 zum Thema Windows Server ...

KVM

How to: Libvirt Port forwarding

(2)

Anleitung von fundave3 zum Thema KVM ...

Heiß diskutierte Inhalte
Router & Routing
über Vmware auf eine FritzBox mit IPv6 per VPN (17)

Frage von Zockervogel zum Thema Router & Routing ...

Basic
Programmierung von Windows Programmen (8)

Frage von Ghost108 zum Thema Basic ...