
37414
04.05.2021, aktualisiert um 08:33:31 Uhr
Dienst prüfen und bei Bedarf starten
Hallo,
ich habe folgende Batchdatei, mit der ich einen Dienst starte:
Nun möchte ich mit der Batch vorab prüfen, ob der Dienst schon gestartet wurde.
Die Ergänzung zum obigen Code soll dann so aussehen:
"wenn der Dienst nicht gestartet ist, dann starte ihn".
Dabei bin ich mir nicht sicher, wie ich "if [not]" und die Abfrage für "running" richtig kombiniere.
Könnt Ihr weiterhelfen?
Danke und Gruß,
imebro
ich habe folgende Batchdatei, mit der ich einen Dienst starte:
sc \\SERVER start "dienst"
Nun möchte ich mit der Batch vorab prüfen, ob der Dienst schon gestartet wurde.
Die Ergänzung zum obigen Code soll dann so aussehen:
"wenn der Dienst nicht gestartet ist, dann starte ihn".
Dabei bin ich mir nicht sicher, wie ich "if [not]" und die Abfrage für "running" richtig kombiniere.
Könnt Ihr weiterhelfen?
Danke und Gruß,
imebro
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 666368
Url: https://administrator.de/forum/dienst-pruefen-und-bei-bedarf-starten-666368.html
Ausgedruckt am: 11.04.2025 um 15:04 Uhr
10 Kommentare
Neuester Kommentar
Moin,
da du vermutlich der erste auf der Welt bist, der das Problem hat
:
Quelle: https://stackoverflow.com/questions/35064964/powershell-script-to-check- ...
Gruß
em-pie
da du vermutlich der erste auf der Welt bist, der das Problem hat
$ServiceName = 'Serenade'
$arrService = Get-Service -Name $ServiceName
while ($arrService.Status -ne 'Running')
{
Start-Service $ServiceName
write-host $arrService.status
write-host 'Service starting'
Start-Sleep -seconds 60
$arrService.Refresh()
if ($arrService.Status -eq 'Running')
{
Write-Host 'Service is now Running'
}
}
Gruß
em-pie
Würde es mit der Powershell machen:
//Edit: OK war zu spät :D
$computer = "dein_PC"
$dienstname = "dein_Dienst"
$service = Get-Service -ComputerName $computer -Name $dienstname
if ($service.Status -match "Running"){
Write-Host Dienst läuft -ForegroundColor Green
} else {
Write-Host Dienst läuft nicht -ForegroundColor Red
Set-Service -ComputerName $computer -Name $dienstname -Status Running
}
//Edit: OK war zu spät :D
Moin,
wo liegt der Sinn, auf einer toten Sprache rumzukauen, wenn du diese zudem noch nicht richtig beherrschst?
Powershell ist deutlich leichter zu erlernen und bei weitem nicht so fehleranfällig.
Aber wenn du deine masochistische Ader unbedingt befriedigen willst, bitteschön:
Gruß Thomas
wo liegt der Sinn, auf einer toten Sprache rumzukauen, wenn du diese zudem noch nicht richtig beherrschst?
Powershell ist deutlich leichter zu erlernen und bei weitem nicht so fehleranfällig.
Aber wenn du deine masochistische Ader unbedingt befriedigen willst, bitteschön:
@echo off
set Service=w32time
set Server=\\SERVER
for /f "Tokens=3" %%A in ('sc %Server% query %Service% ^| findstr "STATE"') do (
if %%A equ 4 (echo.Servive "%Service%" laeuft bereits.) else (sc %Server% start %Service% )
)
Gruß Thomas
Zitat von @37414:
Und man darf doch bestimmte Vorlieben haben, ohne gleich ein Masochist zu sein... oder?
Wenn man sich lieber mit einer derart verbuggten Sprache rumschlägt - die enorm eingeschränkt ist und bei jedem Versuch ein Problem der Sprache zu umgehen nur immer weitere Probleme produziert - als mit einer der leichtverständlichsten und dabei trotzdem eine der mächtigsten Skriptsprachen, dann ist man eindeutig ein Masochist 😛.Und man darf doch bestimmte Vorlieben haben, ohne gleich ein Masochist zu sein... oder?
Kann ich aus Deinem (@Thomas) Code einfach den Eintrag "(echo.Servive "%Service%" laeuft bereits.) else" entfernen oder was muss ich ändern, wenn ich keine Echo-Ausgabe haben möchte?
In dem fall macht es natürlich eher Sinn, die Überpfüfung zu negierenif %%A neq 4 sc %Server% start %Service%
Zitat von @37414:
Darüber hinaus halte ich die Bezeichnung "Masochist" hier wirklich für völlig unangebracht und anmaßend. Solche Beleidigungen haben in einem Forum nichts zu suchen.
Das war auch eher mit einem zwinkernden Auge zu betrachten und keineswegs als Beleidigung gedacht. Sorry, wenn das für dich zu anstössig war.Darüber hinaus halte ich die Bezeichnung "Masochist" hier wirklich für völlig unangebracht und anmaßend. Solche Beleidigungen haben in einem Forum nichts zu suchen.
Ich finde, man sollte einem Thread-Ersteller immer auf SEINE Frage antworten und ihn nicht "runtermachen"
Das hat überhaupt nichts mit "runtermachen" zu tun.Jeder hier, der ausreichend Erfahrung mit Batch gemacht hat - und sich teils über Jahrzehnte notgedrungen damit rumärgern musste, wird dir vollkommen zurecht und letztendlich nur zu deinem eigenen Wohl dazu raten, deine Kenntnisse in dieser Sprache erst gar nicht weiter zu vertiefen.
Wieso Du also von "Probleme prodozieren" schreibst oder von einer "verbuggten Sprache", entzieht sich meiner Kenntnis.
Dann hast du auch noch nicht gerade viele Erfahrungen mit der Sprache gemacht.