Microsoft MVPs inside





 MCSEboard.de – IT Pro Forum zu Windows Server 2008 R2 / 2008 / 2003 & Windows 7 / Vista / XP
Registrieren Hilfe Regeln Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren

Windows Forum — Scripting


Alles zum Thema System Administration Scripting — Q & A zum Thema Scripting: Batch, VBS, WMI, PowerShell


Antwort
     
Themen-Optionen
Alt 22.11.2011, 23:03   #1
Newbie
 
Offline
Registriert seit: 06-2009
Beiträge: 34
findstr mit if-/else-Bedingung verknüpfen bzw. alternatives Konzept verwenden

Zurzeit wird der Status von 2 Diensten ermittelt. Erst wenn beide Dienste laufen wird eine Erfolgsmail verschickt. Läuft nur einer von beiden Diensten geschieht nichts.
Die Syntax:
Code:
echo Der SQL-Server wurde an folgendem Tag zur folgenden Zeit auf folgendem Computer neugestartet: > "C:\scripts\SQL-restart\mail.txt"
echo Datum: %date% >> "C:\scripts\SQL-restart\mail.txt"
echo Zeit: %time% >> "C:\scripts\SQL-restart\mail.txt"
echo Computer: %computername% >> "C:\scripts\SQL-restart\mail.txt"
echo neugestartete Dienste: >> "C:\scripts\SQL-restart\mail.txt"
pslist.exe /accepteula W3SQLMGR | findstr /B /I W3SQLMGR >NUL: 2>&1 >>"C:\scripts\SQL-restart\mail.txt"
pslist.exe /accepteula NTBTRV | findstr /B /I NTBTRV >NUL: 2>&1 >>"C:\scripts\SQL-restart\mail.txt"
findstr /C:"W3SQLMGR" "C:\scripts\SQL-restart\mail.txt" && goto find-str
goto :EOF
:find-str
findstr /C:"NTBTRV" "C:\scripts\SQL-restart\mail.txt" && goto blat-mail
goto :EOF
:blat-mail
cd /d "C:\scripts\SQL-restart"
Blat -install sql-server1.domain.local sysadmin@domain.de
Blat "mail.txt" ^
-to administrator@domain.de -server mail.domain.de -u administrator@domain.de -pw password ^
-debug -timestamp -log blatSMTPlog.txt ^
Ich möchte nun, dass beim Ermitteln nur eines von beiden Diensten eine entsprechende Mail versendet wird, die eine Fehlermeldung enthält.
Kann ich die bislang verwendete Syntax für findstr mit if/else kombinieren bzw. gibt es einen anderen Weg oder muss ich für diesen Vorsatz bei Null beginnen?
Danke für jede konstruktive Hilfe vorab.

Signatur
Gruß

ibicis

    Mit Zitat antworten
Alt 23.11.2011, 07:32   #2
Board Veteran
 
Offline
Registriert seit: 12-2008
Beiträge: 4.674
Was ist der Zweck des ganzen? Ist dafür ein Monitoringsystem nicht geeigneter?

Wenn es unbedingt ein Script sein muss und Powershell sein kann:
Code:
$service1 = (Get-Service W3SQLMGR).Status
$service2 = (Get-Service NTBTRV).Status

if( ($service1 -eq 'running) -and ($service2 -eq 'running') ){
   #Funktion für Erfolg aufrufen
}elseif(($service1 -eq 'running) -or ($service2 -eq 'running') ){
   #Funktion mit Fehler, dass nur ein Dienst läuft
}else{
   #Funktion mit Fehler, dass kein Dienst läuft
}
    Mit Zitat antworten
Alt 23.11.2011, 08:21   #3
Newbie
 
Offline
Registriert seit: 06-2009
Beiträge: 34
Danke dir.
Es ist eine Benutzeraktion die ausgeführt wird, wenn der Dienst mal hängt, was nicht so häufig vorkommt, deshalb ist ein Monitor (noch) nicht angebracht.
Dummerweise kenne ich mich mit Powershell nicht aus, sodass ich diesbzgl. ziemlich auf dem Schlauch stehe.

Signatur
Gruß

ibicis

    Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
batch findstr %errorlevel% krumvn Windows Forum — Scripting 7 19.07.2010 15:26
CMD IF Bedingung edocom Windows Forum — Scripting 4 07.04.2008 21:14
findstr mit mehreren Suchbegriffen? Lennyle Windows Forum — Allgemein 4 12.09.2006 15:44
Findstr Probleme in einer Batch kirus22 Windows Forum — Allgemein 3 10.09.2006 15:31
Windows-2003 OSPF: Routen werden gelöscht anstatt alternatives Gateway zu verwenden andilist Windows Forum — LAN & WAN 0 28.04.2006 16:10


Alle Zeitangaben in MEZ/CET. Es ist jetzt 15:13 Uhr. Seite generiert in 0,028 Sekunden.

- Unsere Partner -

Copyright © 2000 – 2012 MCSEboard.de

Sprung zum Seitenanfang