Bei Windows-Betriebssystem kommen einige Probleme in der einen oder anderen Form leider immer wieder auf. So habe ich einen WSUS-Server auf Basis des neuen Windows Server 2016 aufgesetzt und ein schönes Problem, dass ich vor Ewigkeiten auf einem Windows Server 2003 hatte: Bestimmte Dienste starten einfach nicht zuverlässig!
Damals handelte es sich um Dienste des Exchange Servers, die nach einem Server-Neustart regelmäßig einfach nicht starten wollten. Hierzu hatte ich bereits eine einfache Lösung in meinem damaligen Artikel beschrieben. Ich habe mir für solche Fälle einfach ein Powershell-Skript geschrieben, welches die betroffenen Dienste durchgeht und bei Bedarf startet, wenn diese nicht ausgeführt werden.
Das angepasste Skript für den WSUS sieht ungefähr so aus:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
$Services = 'MSSQL$MICROSOFT##WID', 'WsusService'; foreach ($Service in $Services) { $ServiceObj = Get-Service $Service; if ($ServiceObj.Status -ne "Running") { do { cmd /c "net start $Service"; Start-Sleep -Seconds 30; $ServiceObj = Get-Service $Service; } while ($ServiceObj.Status -ne "Running") } } |
Die dort angegebenen Dienste in der $Services-Variable sind als erstes der Dienst für die interne Windows-Datenbank des WSUS, welche eigentlich nichts anderes ist als eine MSSQL-Datenbank, und der WSUS-Dienst selber. Wichtig: Wegen des $-Zeichens im Dienstnamen der internen Windows-Datenbank dürfen nur die einfachen Anführungszeichen verwendet werden, ansonsten versucht Powershell $MICROSOFT als Variable zu verwenden und diese innerhalb des Strings zu ersetzen.
Hier ist nochmal der Download des ursprünglichen Skripts:
AutostartCheckup.ps1