Jump to content

findstr mit if-/else-Bedingung verknüpfen bzw. alternatives Konzept verwenden


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben

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:

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.

Geschrieben

Was ist der Zweck des ganzen? Ist dafür ein Monitoringsystem nicht geeigneter?

 

Wenn es unbedingt ein Script sein muss und Powershell sein kann:

$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
}

Geschrieben

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.

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...