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, 2741 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 ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Erkennung und -Abwehr
gelöst Lokale Sicherheitsrichtlinie mit Admin-Konto konfigurieren (6)

Frage von garack zum Thema Erkennung und -Abwehr ...

Batch & Shell
gelöst PowerShell Script Move-Item nach x Tagen (5)

Frage von lupolo zum Thema Batch & Shell ...

Firewall
Firewall für DMZ und Intranet richtig konfigurieren (3)

Frage von vGaven zum Thema Firewall ...

Windows Server
gelöst SCCM und WDS Server als separate Verteilungspunkte über PXE konfigurieren (1)

Frage von MiMa89 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (20)

Frage von Xaero1982 zum Thema Microsoft ...

Outlook & Mail
gelöst Outlook 2010 findet ost datei nicht (19)

Frage von Floh21 zum Thema Outlook & Mail ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Festplatten, SSD, Raid
M.2 SSD wird nicht erkannt (14)

Frage von uridium69 zum Thema Festplatten, SSD, Raid ...