PowerShell을 사용하여 서비스가 실행 중인지 확인

Salman Mehmood 2023년6월20일
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는 이름과 상태를 포함하되 이에 국한되지 않는 전달된 활동에 대한 자세한 정보를 가져옵니다. 둘 다 우리의 경우에 필요합니다.

서비스를 획득한 후 최근에 가져온 서비스의 NameStatus 멤버를 사용하여 해당 이름과 상태를 확인할 수 있습니다. 주로 우리가 가져온 서비스가 실제로 모니터링하려는 서비스인지 확인하기 위해 수행됩니다.

서비스를 시작하기 전에 서비스가 실행 중인지 확인해야 합니다. 여기서도 status 멤버가 사용됩니다.

실행 중으로 설정된 경우 서비스가 이미 활성화되었거나 실행 중이므로 시작할 필요가 없습니다. 반면에 서비스가 실행 중이 아니면 Start-Service cmdlet을 사용하여 시작할 서비스의 이름을 해당 매개 변수 중 하나로 전달할 수 있습니다.

서비스가 제대로 시작되고 실행되는지 확인하려면 Start-Sleep cmdlet을 사용하여 일정 시간 동안 기다려야 하며 절전 시간이 경과해야 합니다.

충분한 시간을 기다린 후 서비스 상태를 확인할 수 있습니다. 서비스를 현재 상태로 업데이트하려면 Refresh() 메서드를 사용하여 서비스의 최신 상태를 가져올 수 있습니다.

그 후 간단한 비교 확인으로 서비스가 실행 중인지 여부를 확인할 수 있습니다.

Salman Mehmood avatar Salman Mehmood avatar

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

관련 문장 - PowerShell Service