ds-6.1
Goto Top

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.

Content-Key: 237786

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

Printed on: April 19, 2024 at 22:04 o'clock

Member: colinardo
colinardo May 12, 2014 updated at 09:35:50 (UTC)
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
Member: Snowman25
Snowman25 May 12, 2014 updated at 10:05:02 (UTC)
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.
Member: DS-6.1
DS-6.1 May 12, 2014 updated at 11:37:24 (UTC)
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
Member: colinardo
colinardo May 12, 2014 updated at 11:48:46 (UTC)
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