PowerShell을 사용하여 서비스가 실행 중인지 확인
이 문서는 Windows 서비스가 현재 실행 중인지 여부를 PowerShell 스크립팅을 사용하여 확인하고 서비스가 실행 중이 아니면 서비스를 켜는 방법을 보여줍니다.
PowerShell을 사용하여 서비스가 실행 중인지 확인
Microsoft Windows의 핵심 구성 요소 중 하나인 서비스는 장기 실행 프로세스를 원활하게 만들고 관리하는 데 필수적입니다. 핵심 실행의 중요성에 따라 중요한 시스템이나 맞춤형 서비스를 지속적으로 모니터링하고, 동작을 추적하고, 실행 중인지 확인하고, 비정상적인 조치가 발생하면 적절한 조치를 취하고 싶을 수 있습니다.
사용 가능한 모든 서비스를 인쇄하는 데 사용되는 다음 cmdlet을 고려하십시오.
sc queryex type=service state=all
이것은 다음 출력을 보여줍니다.
.
.
< 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 >
위의 출력에서 많은 서비스가 실행 중이고 중지되었음을 알 수 있습니다. 이 많은 서비스 목록 중에는 비정상적인 동작을 추적하거나 실행 중인지 확인하려는 중요한 서비스도 있습니다.
PowerShell 스크립팅을 사용하여 활동을 모니터링하는 방법을 살펴보겠습니다.
다음 스니펫을 고려하십시오.
# 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"
}
}
위의 코드에서 볼 수 있듯이 PowerShell 스크립팅을 통해 원하는 서비스를 쉽게 추적할 수 있습니다.
먼저 서비스 이름은 $serviceToTrack
이라는 변수에 저장됩니다. 그런 다음 이름이 Get-Service
cmdlet에 -Name
매개 변수로 전달됩니다.
Get-Service
는 이름과 상태를 포함하되 이에 국한되지 않는 전달된 활동에 대한 자세한 정보를 가져옵니다. 둘 다 우리의 경우에 필요합니다.
서비스를 획득한 후 최근에 가져온 서비스의 Name
및 Status
멤버를 사용하여 해당 이름과 상태를 확인할 수 있습니다. 주로 우리가 가져온 서비스가 실제로 모니터링하려는 서비스인지 확인하기 위해 수행됩니다.
서비스를 시작하기 전에 서비스가 실행 중인지 확인해야 합니다. 여기서도 status 멤버가 사용됩니다.
실행 중
으로 설정된 경우 서비스가 이미 활성화되었거나 실행 중이므로 시작할 필요가 없습니다. 반면에 서비스가 실행 중이 아니면 Start-Service
cmdlet을 사용하여 시작할 서비스의 이름을 해당 매개 변수 중 하나로 전달할 수 있습니다.
서비스가 제대로 시작되고 실행되는지 확인하려면 Start-Sleep
cmdlet을 사용하여 일정 시간 동안 기다려야 하며 절전 시간이 경과해야 합니다.
충분한 시간을 기다린 후 서비스 상태를 확인할 수 있습니다. 서비스를 현재 상태로 업데이트하려면 Refresh()
메서드를 사용하여 서비스의 최신 상태를 가져올 수 있습니다.
그 후 간단한 비교 확인으로 서비스가 실행 중인지 여부를 확인할 수 있습니다.
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