Überprüfen Sie, ob ein Dienst mit PowerShell ausgeführt wird
Dieser Artikel soll zeigen, wie Sie mithilfe von PowerShell-Skripting feststellen können, ob ein Windows-Dienst derzeit ausgeführt wird oder nicht. Wenn der Dienst nicht ausgeführt wird, schalten Sie den Dienst ein.
Überprüfen Sie, ob ein Dienst mit PowerShell ausgeführt wird
Als eine der Kernkomponenten von Microsoft Windows sind Services von entscheidender Bedeutung, um sicherzustellen, dass lang andauernde Prozesse reibungslos erstellt und verwaltet werden. Aufgrund ihrer Bedeutung für die Kernausführung kann es sinnvoll sein, kritische Systeme oder maßgeschneiderte Dienste kontinuierlich zu überwachen, ihr Verhalten zu verfolgen, zu überprüfen, ob sie ausgeführt werden, und geeignete Maßnahmen zu ergreifen, wenn anormale Maßnahmen auftreten.
Betrachten Sie das folgende Cmdlet, das verwendet wird, um alle verfügbaren verfügbaren Dienste zu drucken:
sc queryex type=service state=all
Dies zeigt die folgende Ausgabe:
.
.
< Output Redacted >
.
SERVICE_NAME: AJRouter
DISPLAY_NAME: AllJoyn Router Service
TYPE : 20 WIN32_SHARE_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 1077 (0x435)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 0
FLAGS :
SERVICE_NAME: ALG
DISPLAY_NAME: Application Layer Gateway Service
TYPE : 10 WIN32_OWN_PROCESS
STATE : 1 STOPPED
WIN32_EXIT_CODE : 1077 (0x435)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 0
FLAGS :
SERVICE_NAME: ApHidMonitorService
DISPLAY_NAME: AlpsAlpine HID Monitor Service
TYPE : 10 WIN32_OWN_PROCESS
STATE : 4 RUNNING
(STOPPABLE, NOT_PAUSABLE, ACCEPTS_SHUTDOWN)
WIN32_EXIT_CODE : 0 (0x0)
SERVICE_EXIT_CODE : 0 (0x0)
CHECKPOINT : 0x0
WAIT_HINT : 0x0
PID : 4464
FLAGS :
.
.
.
< Output Redacted >
Aus der obigen Ausgabe ist ersichtlich, dass viele Dienste ausgeführt und gestoppt werden. Unter dieser großen Liste von Diensten wird auch unser wichtiger Dienst vorhanden sein, den wir auf abnormales Verhalten verfolgen oder sehen möchten, ob er ausgeführt wird.
Sehen wir uns an, wie wir unsere Aktivitäten mit PowerShell-Skripting überwachen können.
Betrachten Sie den folgenden Ausschnitt:
# Declare a variable for storing the service's name and store the service's name
$serviceToTrack = "AJRouter"
# Get the status of the service
$service = Get-Service -Name $serviceToTrack
$serviceName = $service.Name
$serviceStatus = $service.Status
# Print the name and status of the service to be monitored
Write-Host Service Name: $serviceName Status: $serviceStatus
# Check if the service is running or not
# The code block is skipped in case the service is already running
if ($serviceStatus -ne "Running")
{
Write-Host "$ServiceName is not running!"
# Start the service using Start-Service
Start-Service $ServiceName
Write-Host "Starting $serviceName...."
# Wait for 10 seconds to allow the service to properly start-up
Start-Sleep -seconds 10
# Refresh the service details to renew service details stored in $service
$service.Refresh()
# Check if the service is running
if ($service.Status -eq 'Running')
{
# Print out the service running message if the service has started
Write-Host "$serviceName is now Running"
}
}
Wie im obigen Code zu sehen ist, kann jeder gewünschte Dienst einfach per PowerShell-Skripting nachverfolgt werden.
Zuerst wird der Name des Dienstes in der Variablen namens $serviceToTrack
gespeichert. Danach wird der Name als Parameter -Name
an das Cmdlet Get-Service
übergeben.
Der Get-Service
ruft detaillierte Informationen über die an ihn übergebene Aktivität ab, einschließlich, aber nicht beschränkt auf Name und Status. Beides ist in unserem Fall erforderlich.
Nachdem wir den Dienst erworben haben, können wir seinen Namen und Status mithilfe der Elemente Name
und Status
des kürzlich abgerufenen Dienstes überprüfen, was hauptsächlich geschieht, um zu bestätigen, dass der von uns abgerufene Dienst tatsächlich der ist, den wir überwachen möchten.
Vor dem Start des Dienstes muss überprüft werden, ob der Dienst läuft. Auch hier wird wieder der Status Member verwendet.
Steht er auf Running
, ist der Dienst bereits aktiv bzw. läuft und muss nicht gestartet werden. Wenn der Dienst andererseits nicht ausgeführt wird, können wir das Cmdlet Start-Service
verwenden und den Namen des zu startenden Dienstes als einen seiner Parameter übergeben.
Um sicherzustellen, dass der Dienst ordnungsgemäß gestartet und ausgeführt wird, müssen wir mit dem Cmdlet Start-Sleep
einige Zeit warten, bis die Zeit zum Schlafen verstrichen ist.
Nachdem wir genügend Zeit gewartet haben, können wir den Status des Dienstes überprüfen. Um den Dienst auf seinen aktuellen Zustand zu aktualisieren, können wir die Methode Refresh()
verwenden, um den neuesten Zustand des Dienstes abzurufen.
Eine einfache Vergleichsprüfung danach kann bestätigen, ob der Dienst ausgeführt wird oder nicht.
Hello! I am Salman Bin Mehmood(Baum), a software developer and I help organizations, address complex problems. My expertise lies within back-end, data science and machine learning. I am a lifelong learner, currently working on metaverse, and enrolled in a course building an AI application with python. I love solving problems and developing bug-free software for people. I write content related to python and hot Technologies.
LinkedIn