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

Script für -Dienste stoppen beim Systemstart- geht nach Rechnerneustart nicht richtig

Frage Microsoft

Mitglied: 8377

8377 (Level 1)

13.12.2007, aktualisiert 18.12.2007, 5385 Aufrufe, 5 Kommentare

Hallo alle miteinander,

ich habe folgendes Problem. Ich möchte, dass bei jeder Neuanmeldung eines Benutzers zwei Dienste gestoppt werden, um eine Konfigurationsdatei für eine Desktop-Firewall in ihr Arbeitsverzeichnis zu kopieren. Danach sollen diese Dienste wieder hochgefahren werden. So weit, so gut. Das Script ist eine Batchdatei. Habe versucht, das Ganze über den Gruppenrichtlinieneditor als Anmeldescript laufen zu lassen. Probs gibt's dann natürlich bei nicht-administrativen Benutzern. Also über den Taskplaner (Bei Anmeldung). Jetzt gibt es aber das Problem, dass bei einem Rechnerneustart das Script zwar gestartet wird, der SCM aber noch nicht so weit zu sein scheint, die Dienste also manchmal nicht beendet werden können, das Script bleibt "hängen". Bei einer bloßen Neuanmeldung eines Benutzers gibt's das Prob nicht. Folge ist ab und an sogar, dass einer der Dienste gestoppt werden konnte, aber der andere nicht. Durch die Abhängigkeiten kann der gestoppte aber nicht wieder gestartet werden, was im schlimmsten Fall dazu führt, das die Firewall inaktiv bleibt. Lasse ich das Script mit "sleep.exe" warten, geht es danach tadellos. Das finde ich aber nur die zweitbeste Lösung. Nun fahnde ich nach einer Möglichkeit, abzufragen, wie weit der Ladevorgang der Dienste ist, um einen definierten Zustand zu erreichen, bei dem ich das Script "weitermachen" lasse. Der Eventlog gibt leider nicht so viel her, ich krieg von allen gestarteten nur sehr wenige tatsächlich angezeigt. Dienste stoppe und starte ich mit "net Stop/start", mit "sc" gibt's die gleichen Effekte. Mit %errorlevel% zu arbeiten ist nur mäßig erfolgreich, da der Level egal was schiefgeht, immer "2" ist, sich somit der Fehler auch nicht richtig differenzieren lässt. Wäre cool, wenn mir einer weiterhelfen könnte.

Gruß Thomas

P.S. Es geht in erster Linie um Win XP, soll aber auch auf Win2k- und Vista-Rechnern laufen.
Mitglied: AndreasHoster
13.12.2007 um 15:13 Uhr
Du kannst mit WMI feststellen, ob ein Dienst läuft (hier am Beispiel der Automatischen Updates):
On Error Resume Next

Const wbemFlagReturnImmediately = &h10
Const wbemFlagForwardOnly = &h20

Set objWMIService = GetObject("winmgmts:\\.\root\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Service where DisplayName='Automatische Updates'", "WQL",wbemFlagReturnImmediately + wbemFlagForwardOnly)

For Each objItem In colItems
WScript.Echo "State: " & objItem.State
WScript.Echo
Next

Wenn objItem.State Running ist, dann kann man weitermachen.
Bitte warten ..
Mitglied: 8377
13.12.2007 um 16:20 Uhr
der Projektbetreuer will es unbedingt per Batch haben. Leider, würd' es auch lieber mit VBS abhandeln. Aber es gibt hier eine sehr heterogene Landschaft, auch was Systemkonfigurationen angeht, somit ist nich klar, ob jeder OU-Administrator den WSH zulässt. Und, ich weiß eben noch gar nicht, welchen Dienst ich abfragen soll, welches also "derjenige welche" ist, der gestartet sein muss, bevor ich das Script fortsetzen kann. Habe mal versucht, vom Systemstart an mit "net start"-Abfragen alle 2 sec. herauszukriegen, welche gestartet sind. Der einizige Unterschied war dann der "SSDP-Suchdienst", der aber auch im Eventlog angezeigt wird. Wenn ich es an den gebunden habe, hat es unter WinXP auch einwandfrei funktioniert. Prob. hier nur, den braucht kein Mensch, könnte also auch deaktiviert sein. Und unter Win2k gibt's den schon mal gar nicht. Was tun, sprach Zeus...?
Bitte warten ..
Mitglied: AndreasHoster
13.12.2007 um 17:06 Uhr
Die Desktop Firewall gar nicht automatisch beim Systemstart starten, sondern im Skript hinterher? Nach dem Austausch?
Und solche WMI Abfragen lassen sich zur Not auch per Kommandozeile mit WMIC, wobei ich mich da nicht auskenne.
BSP: wmic service NAME get state
zeigt den Status des Services Name oder wmic service get name, state zeigt alle.

Ansonsten wüsste ich auch nicht weiter.
Bitte warten ..
Mitglied: 8377
14.12.2007 um 09:00 Uhr
erstmal vielen Dank für deine Mühe. die WMIC kannte ich so noch gar nicht, nur im Zusammenhang mit PoSH. Werde mir die erst mal ausführlich zu Gemüte führen. Lass den Thread mal noch offen, vielleicht fällt noch jemandem etwas ein, wie man den Systemstatus während des Startvorgangs abfragen kann. Vielleicht muss man das ja auch gar nicht an Diensten festmachen, sondern es gibt noch eine andere Möglichkeit, dass einem das System mitteilt, dass es 'jetzt' einen bestimmten Status erreicht hat.
Allen ein schönes Wochenende
Bitte warten ..
Mitglied: 8377
18.12.2007 um 10:12 Uhr
So, hab's nun selbst herausbekommen. Wenn man den Befehl "sc querylock" ausführt, gibt er während des Startprozesses den Wert "TRUE" zurück. Sobald die NT-Dienste frei für Benutzeranforderungen sind, springt dieser Wert auf "FALSE", so dass man nun frank und frei Dienste stoppen oder starten, oder was man auch immer damit tun will, kann. Wer lesen kann, ist klar im Vorteil. Das musste ich mal wieder feststellen, Dokumentation zu Befehlen betrifft das im Besonderen. Euch allen ein schönes Weihnachtsfest. Schließe den Thread.
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Microsoft Office
Access ein Script alle X Minuten ausführen und bei Bedarf stoppen (5)

Frage von thomas1972 zum Thema Microsoft Office ...

Windows Server
Windows Server 2016 VPN richtig konfigurieren (1)

Frage von junior zum Thema Windows Server ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...

DSL, VDSL
DSL-Signal bewerten (8)

Frage von SarekHL zum Thema DSL, VDSL ...