-jarik-
Goto Top

Exchange per Script mit if und else für Backup stoppen und wieder starten

Folgende Situation,

auf einem Exchange-Server läuft zum erstellen der Backups Acronis True Image Enterprise Server.
Im Moment sind von den Vor- / Nachbefehlen her 2 winzige Scripts mit eingebettet, um die Datenbank stillzulegen während das Backup läuft.

NetStop.bat
/
net stop "POP3 Connector für Windows"
net stop "Exchange Informationsspeicher"
/


Mein NetStart.bat ist demnach fast das gleiche, nur in umgekehrter Reihenfolge.
Was ich allerdings noch hinterlegen will ist eine Abfrage um zu testen ob der Dienst bereits schon im voraus gestoppt / gestartet wurde.

Im Endeffekt sollte es dann so aussehen:


/
Wenn "POP3 Connector für Windows" schon gestoppt
dann überspringe net stop "POP3 Connector für Windows"

ansonsten net stop "POP3 Connector für Windows"

Wenn "Exchange Informationsspeicher" schon gestoppt
dann überspringe net stop "Exchange Informationsspeicher"

ansonsten net stop "Exchange Informationsspeicher"
/

Wäre super wenn mir jemand von der Syntax her behilflich sein könnte.

Content-Key: 59554

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

Printed on: April 26, 2024 at 07:04 o'clock

Member: Iwan
Iwan May 22, 2007 at 14:24:34 (UTC)
Goto Top
http://de.wikibooks.org/wiki/Batch-Programmierung:_Beispiele
schau da mal unter "TaskList-Abfrage"

ansonsten vielleicht irgendwie per Errorlabfrage oder so:
net start "Dienstname" 2> net start "Dienstname"
Member: bastla
bastla May 22, 2007 at 14:45:56 (UTC)
Goto Top
Hallo -Jarik- und willkommen im Forum!

Vielleicht entsteht im Beitrag Batchdatei prüft ob Dienst gestartet ist auch etwas für Dich Nützliches ...

Grüße
bastla
Member: -Jarik-
-Jarik- May 22, 2007 at 15:05:11 (UTC)
Goto Top
Vielen Dank für eure beiden Antworten face-smile

Auch an euch ein herzliches "Hallo Welt" ^^
Member: -Jarik-
-Jarik- May 23, 2007 at 12:57:17 (UTC)
Goto Top
Ich bin jetzt schon ein wenig weiter gekommen soweit es mir meine Zeit erlaubt....
Im Moment fehlt mir aber noch eine Funktion mit der ich einen zusammenhängenden Namen deklarieren kann.

Mit ('sc getkeyname "Microsoft Connector for POP3 Mailboxes"') geht es noch nicht, ich gehe davon aus das ein anderes Zeichen in diesem Zusammenhang mehr Erfolg bringtum klarzustellen das es sich dabei um einen einzigen Dienst handelt.

Funktioniert:

echo off
setlocal EnableDelayedExpansion

REM Pruefen und bei Status "nicht gestartet" starten von: SSDP-Suchdienst
set status=STOPPED
for /f "tokens=6 delims= " %%a in ('sc getkeyname SSDP-Suchdienst') do set dienst=%%a
echo Dienst: %dienst%
for /f "tokens=3 skip=3 delims=: " %%b in ('sc query %dienst%') do if /i "%%b" == "RUNNING" set status=%%b
echo Status: %status%
if /i %status% == RUNNING net stop %"dienst"%




Funktioniert noch nicht:

echo off
setlocal EnableDelayedExpansion

REM Pruefen und bei Status "nicht gestartet" starten von: Microsoft Connector for POP3 Mailboxes
set status=STOPPED
for /f "tokens=6 delims= " %%a in ('sc getkeyname "Microsoft Connector for POP3 Mailboxes"') do set dienst=%%a
echo Dienst: %dienst%
for /f "tokens=3 skip=3 delims=: " %%b in ('sc query %dienst%') do if /i "%%b" == "RUNNING" set status=%%b
echo Status: %status%
if /i %status% == RUNNING net stop %"dienst"%


Kann mir jemand bitte sagen in wiefern ich die Anführungszeichen abändern bzw ergänzen muss?

Vielen Dank für eure Hilfe :D
Member: bastla
bastla May 23, 2007 at 13:34:16 (UTC)
Goto Top
Hallo -Jarik-!

Zunächst nochmals der Hinweis auf den oben genannten Beitrag - dort findest Du einige (neue) Ansätze, wie es noch einfacher gehen könnte ...
Falls Du trotzdem bei Deiner Lösung bleiben willst, könntest Du es so versuchen:
@echo off & setlocal
REM Pruefen und bei Status "gestartet" stoppen von: Microsoft Connector for POP3 Mailboxes  
set status=UNBEKANNT
for /f "tokens=5* delims= " %%a in ('sc getkeyname "Microsoft Connector for POP3 Mailboxes"') do set "dienst=%%b"  
echo Dienst: %dienst%
for /f "tokens=3 skip=3 delims=: " %%b in ('sc query %dienst%') do if /i "%%b" == "RUNNING" set status=%%b  
echo Status: %status%
if /i %status% == RUNNING net stop %"dienst"%  
Kurze Erklärung zu den Änderungen:

Wenn der "SERVICE_NAME" des Dienstes Leerzeichen enthält, wurde bisher nur der erste Namensbestandteil verwendet (Token 6; die weiteren bekamen die "Token-Nummern" 7, 8, ...). Durch die Änderung auf "tokens=5*" wird alles nach dem 5. Bestandteil der Zeile als Einheit betrachtet, muss aber als %%b angesprochen werden (%%a ist jetzt Token 5).

Die REM-Zeile beschreibt jetzt, was die weiteren Zeilen bewirken sollen.

Das Setzen der Variable %status% auf "UNBEKANNT" entspricht ebenfalls eher der weiteren Vorgangsweise, da genau genommen nur geprüft wird, ob der Status "RUNNING" ist. Der Umkehrschluss, dass der Status "STOPPED" sein muss, wenn er nicht "RUNNING" ist, ist nicht unbedingt zulässig (abgesehen von "PAUSED" könnte der Status vielleicht auch gar nicht feststellbar sein ...). Da in weiterer Folge aber (derzeit) ohnehin nur auf "RUNNING" geprüft wird, stellt die von mir vorgenommene Änderung eigentlich nur eine Vorleistung auf eine mögliche Erweiterung der Batchdatei dar.

Grüße
bastla
Member: -Jarik-
-Jarik- May 24, 2007 at 07:18:03 (UTC)
Goto Top
Erst einmal ein herzliches Danke an:

admin1987
biber
bastla
cykes
dani
&
Iwan

Meine Scripte sind dank euch jetzt fertig.