ds-6.1

Abfrage von Diensten per CMD - teilweise sehr lange Antwortzeiten

Hallo,

vor kurzem habe ich mir eine Batch-Datei erstellt, mit deren Hilfe ich überprüfen kann, ob die Citrix-Druckdienste auf entfernten Servern laufen.

Die Datei sieht vereinfacht folgendermaßen aus: sc \\SERVER query "DIENST"

Diese Abfrage läuft für 3 virualisierte Citrix-Server mit Win2008R2. Die Antwort von 2 der 3 Servern kommt innerhalb von Millisekunden zurück. Bei einem der Server (es ist immer derselbe) dauert die Antwort ca. 10 Sekunden.

Hat jemand eine Idee woran das liegen könnte? Wenn ein User anruft und über Druckerprobleme klagt, bräuchte ich idealerweise sofort die Antworten der Dienste...

Vielen Dank.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 237786

Url: https://administrator.de/forum/abfrage-von-diensten-per-cmd-teilweise-sehr-lange-antwortzeiten-237786.html

Ausgedruckt am: 25.04.2025 um 08:04 Uhr

colinardo
colinardo 12.05.2014 aktualisiert um 11:35:50 Uhr
Goto Top
Hallo DS-6.1, Willkommen im Forum!
Warum nicht einen Trigger oder Script auf dem jeweiligen Server erstellen der bei gestopptem oder abgestürztem Dienst diesen automatisch neu startet ? Dann gibt es weniger support-calls face-wink

Grüße Uwe
Snowman25
Snowman25 12.05.2014 aktualisiert um 12:05:02 Uhr
Goto Top
Hallo @DS-6.1,

steht denn nichts im Eventlog des langsamen Servers?
Ist hier möglicherweise die Uhrzeit am Server falsch gestellt?

Ansonsten kannst du die Powershell verwenden. Die soll wohl schneller laufen als SC:
$a = gwmi -query "SELECT * FROM win32_service WHERE name = 'Spooler'" -computer SERVER1  
$b = gwmi -query "SELECT * FROM win32_service WHERE name = 'Spooler'" -computer SERVER2  
$c = gwmi -query "SELECT * FROM win32_service WHERE name = 'Spooler'" -computer SERVER3  

Write-Host $a.Name`ton $a.__SERVER`tis $a.STATUS`twith state $a.STATE`n -NoNewLine
Write-Host $b.Name`ton $b.__SERVER`tis $b.STATUS`twith state $b.STATE`n -NoNewLine
Write-Host $c.Name`ton $c.__SERVER`tis $c.STATUS`twith state $c.STATE`n -NoNewLine

Gruß,
@Snowman25

€dit: Ändern von ECHO auf Write-Host, damit keine Zeilenumbrüche den Output zerschießen.
DS-6.1
DS-6.1 12.05.2014 aktualisiert um 13:37:24 Uhr
Goto Top
Hallo colinardo, das wäre natürlich die elegantere Lösung und würde in der Tat ein paar Telefonate ersparen. Bei meinem aktuellen Kenntnisstand müsste ich erst einmal eine Weile googeln bis das funktioniert. Aber definitiv eine Hausaufgabe für mich für die nächsten Tage. Für eine Hilfestellung wie so ein Script aussehen könnte bin ich natürlich immer dankbar face-wink

@snowmen25: die Uhrzeiten sind korrekt und in den Logs konnte ich nichts auffälliges finden. Server B, der verspätet antwortet, fühlt sich beim Arbeiten allerdings flüssiger an als Server A, der ja beim Dienst sofort antwortet... Kurios
colinardo
colinardo 12.05.2014 aktualisiert um 13:48:46 Uhr
Goto Top
z.B. mit folgendem Powershell-Script, das ganze in den Taskplaner gepackt und regelmäßig ausgeführt.
$dienst = Get-Service -Name spooler -ErrorAction Stop
if ($dienst.Status -ne "Running"){  
    write-host "Dienst '$($dienst.Name)' befindet sich im Status '$($dienst.Status)' und wird nun neu gestartet."  
    try{
        Start-Service $dienst
        $dienst.WaitForStatus("Running",[timespan]"00:02:00")  
    } 
    catch [System.ServiceProcess.TimeoutException] {
        write-host "Der Dienst konnte nicht innerhalb von 2 Minuten gestartet werden!" -ForegroundColor Red  
    } 
    Finally {
        write-host "Aktueller Status: "$dienst.Status  
    }
}else{
  write-host "Dienst $($dienst.Name) läuft ordnungsgemäß."  
}
oder mit Batch ganz banal so:
sc query spooler | find "RUNNING" || sc start spooler