PS - Start Remote Service if Service not running
Guten Morgen zusammen,
wir haben seit einigen Tagen ein Problem auf unseren Citrix Terminalservern.
Nach dem Neustart gegen 03:00 aller Server startet der Dienst "Citrix Profilverwaltung" leider nicht auf allen Servern.
Ich bin hier noch auf Ursachenforschung, wollte dafür dann kurzfristig ein Workaround schaffen.
Leider komme ich mit der Aufgabe in Powershell an meine Skripting grenzen und bräuchte euer Fachwissen.
Folgende Skript liegt vor:
Ich erhalte allerdings folgende Ausgabe in der Powershell:
Folgendes sollte mit dem Skript umgesetzt werden:
- Prüfe alle Citrix Server aus der Liste "ctx-servers.txt", ob der Dienst "ctxProfile" gestartet ist
- Wenn der Dienst nicht den Status "Running" aufweist, soll der Dienst per Powershell auf dem Server gestartet werden
- Optional wäre eine Ausgabe in ein Logfile schön, wo dokumentiert wird, auf welchem Server der Dienst nicht lief und gestartet werden musste
Ich bedanke mich vorab für Input.
wir haben seit einigen Tagen ein Problem auf unseren Citrix Terminalservern.
Nach dem Neustart gegen 03:00 aller Server startet der Dienst "Citrix Profilverwaltung" leider nicht auf allen Servern.
Ich bin hier noch auf Ursachenforschung, wollte dafür dann kurzfristig ein Workaround schaffen.
Leider komme ich mit der Aufgabe in Powershell an meine Skripting grenzen und bräuchte euer Fachwissen.
Folgende Skript liegt vor:
$ServiceName = 'ctxProfile'
$ctxserver = get-content "\\fileserver01\support\Deployment\ctx-servers.txt"
$ServiceStatus = Get-Service -ComputerName $ctxserver -Name $ServiceName
foreach ($computer in $ctxserver)
{
while ($ServiceStatus.Status -ne 'Running')
{
Start-Service $ServiceName
write-host $ServiceStatus.status
write-host 'Service starting'
Start-Sleep -seconds 60
$ServiceStatus.Refresh()
if ($ServiceStatus.Status -eq 'Running')
{
Write-Host '$ServiceName is now Running'
}
}
}
Ich erhalte allerdings folgende Ausgabe in der Powershell:
Start-Service : Es kann kein Dienst mit dem Dienstnamen "ctxProfile" gefunden werden.
In Zeile:10 Zeichen:5
+ Start-Service $ServiceName
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (ctxProfile:String) [Start-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.StartServiceCommand
Stopped Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Ru
nning Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running
Service starting
$ServiceName is now Running
Start-Service : Es kann kein Dienst mit dem Dienstnamen "ctxProfile" gefunden werden.
In Zeile:10 Zeichen:5
+ Start-Service $ServiceName
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (ctxProfile:String) [Start-Service], ServiceCommandException
+ FullyQualifiedErrorId : NoServiceFoundForGivenName,Microsoft.PowerShell.Commands.StartServiceCommand
Stopped Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Ru
nning Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running Running
Service starting
Folgendes sollte mit dem Skript umgesetzt werden:
- Prüfe alle Citrix Server aus der Liste "ctx-servers.txt", ob der Dienst "ctxProfile" gestartet ist
- Wenn der Dienst nicht den Status "Running" aufweist, soll der Dienst per Powershell auf dem Server gestartet werden
- Optional wäre eine Ausgabe in ein Logfile schön, wo dokumentiert wird, auf welchem Server der Dienst nicht lief und gestartet werden musste
Ich bedanke mich vorab für Input.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 1066562214
Url: https://administrator.de/contentid/1066562214
Ausgedruckt am: 25.11.2024 um 02:11 Uhr
6 Kommentare
Neuester Kommentar
Moin,
Dein Skript macht genau das, was du ihm sagst.
In Zeile 3 fragst du den Status auf den Citrix-Servern ab.
In Zeile 11 willst auf dem lokalen Server den Service starten.
Geh nochmal in dich und stelle den gesamten Ablauf in einem Programmablaufplan (PAP) dar.
Den kannst du zu deiner Dokumentation legen, damit du im Falle eines Audits alles zusammen hast.
Gruß
C.C.
Dein Skript macht genau das, was du ihm sagst.
In Zeile 3 fragst du den Status auf den Citrix-Servern ab.
In Zeile 11 willst auf dem lokalen Server den Service starten.
Geh nochmal in dich und stelle den gesamten Ablauf in einem Programmablaufplan (PAP) dar.
Den kannst du zu deiner Dokumentation legen, damit du im Falle eines Audits alles zusammen hast.
Gruß
C.C.
Jetzt hab ich mal noch ne Frage dazu. Warum wird der Computername aus einer Datei entnommen?
Könnte man das nicht einfach über eine Systemvariable machen? Das Script wird ja sowieso nur lokal
ausgeführt. Wäre auch im Recovery Fall sonst ein Fallstrick, da der Fileserver da sein müsste.
Sonst super Script. Das nehme ich mir mal in mein Wiki mit auf für solche Fälle. Danke
Könnte man das nicht einfach über eine Systemvariable machen? Das Script wird ja sowieso nur lokal
ausgeführt. Wäre auch im Recovery Fall sonst ein Fallstrick, da der Fileserver da sein müsste.
Sonst super Script. Das nehme ich mir mal in mein Wiki mit auf für solche Fälle. Danke
Zitat von @SlainteMhath:
Warum wird der Computername aus einer Datei entnommen?
In der Datei stehen (wahrscheinlich) mehrere Computername, deswegen auch die Foreach Schleife.Mein Fehler Danke