PowerShell에서 서비스 관리하는 방법

  1. PowerShell에서 서비스 나열하기
  2. PowerShell에서 원격 서비스 찾기
  3. PowerShell에서 서비스 시작 및 중지하기
  4. PowerShell에서 서비스 재시작하기
  5. PowerShell에서 서비스의 시작 유형 변경하기
PowerShell에서 서비스 관리하는 방법

Windows 서비스는 거의 모든 Windows 시스템 관리자들이 사용해야 하는 주제 중 하나입니다. 물론 Windows 서비스를 관리하기 위해 우리는 일회성 작업을 위해 services.msc MMC 스냅인을 시작할 수 있지만, PowerShell을 사용하여 자동화를 구축해야 할 경우는 어떻게 해야 할까요?

이 기사는 모든 PowerShell 서비스 cmdlet을 논의하고, 그것들을 사용하며, 많은 컴퓨터에서 서비스를 관리하기 위한 스크립트를 개발하는 방법에 대해 설명합니다.

PowerShell에서 서비스 나열하기

Windows PowerShell과 서비스로 수행할 수 있는 가장 기본적인 작업 중 하나는 로컬 또는 원격 컴퓨터에서 어떤 서비스가 존재하는지를 단순히 나열하는 것입니다. 예를 들어 PowerShell을 열고 Get-Service 명령을 실행하여 출력을 관찰하십시오.

Get-Service 명령만으로도 로컬 컴퓨터의 모든 서비스와 각 서비스의 상태, 이름, 및 표시 이름을 나열합니다.

Get-Service

출력:

Status   Name               DisplayName
------   ----               -----------
Stopped  AarSvc_55244       AarSvc_55244
Stopped  AJRouter           AllJoyn Router Service
Stopped  ALG                Application Layer Gateway Service
Running  AMD Crash Defen... AMD Crash Defender Service
<SNIP>

다른 cmdlet과 마찬가지로 PowerShell은 각 서비스에 대한 모든 속성을 반환하지 않습니다.

예를 들어, 필요한 서비스나 아마도 서비스 설명을 보고 싶다면, 결과를 Select-Object 명령으로 파이프하여 * 와일드카드를 사용하여 모든 속성을 나타내는 방식으로 이러한 속성을 찾을 수 있습니다.

Get-Service ALG | select *

출력:

Name                : ALG
RequiredServices    : {}
CanPauseAndContinue : False
CanShutdown         : False
CanStop             : False
DisplayName         : Application Layer Gateway Service
DependentServices   : {}
MachineName         : .
ServiceName         : ALG
ServicesDependedOn  : {}
ServiceHandle       :
Status              : Stopped
ServiceType         : Win32OwnProcess
StartType           : Manual
Site                :
Container           :

PowerShell에서 원격 서비스 찾기

어쩌면 우리는 네트워크에 있으며 하나 이상의 원격 Windows 컴퓨터에서 서비스를 나열해야 할 수도 있습니다. Windows PowerShell 시절에는 -ComputerName 매개변수를 사용하여 이를 할 수 있었지만, 불행히도 그 매개변수는 더 이상 존재하지 않습니다.

원격 컴퓨터에서 Windows 서비스를 검사하는 한 가지 방법은 Windows PowerShell 원격(Remoting) 기능을 사용하는 것입니다. PS Remoting을 사용하면 모든 로컬 명령을 캡슐화하고 로컬에서 하던 것처럼 원격 세션에서 호출할 수 있습니다.

원격 컴퓨터에서 PowerShell 원격이 활성화된 경우, 예를 들어, Invoke-Command cmdlet을 사용하여 원격 컴퓨터에서 Get-Service 명령을 실행할 수 있습니다.

$cred = Get-Credential
Invoke-Command -ComputerName SRV1 -ScriptBlock { Get-Service } -Credential $cred

출력:

Status         Name          DisplayName     PSComputerName
------         ----          -----------     --------------
Stopped     AarSvc_55244     AarSvc_55244        SRV1
<SNIP>

실행된 후 Invoke-Command cmdlet은 Get-Service가 반환한 모든 정보를 전달하며, 예상대로 서비스가 반환됩니다.

Invoke-Command cmdlet이 반환하는 추가적인 PSComputerName 속성을 확인하십시오. 우리는 또한 많은 원격 컴퓨터에서 서비스를 나열하기 위한 간단한 스크립트를 만들 수 있습니다.

PowerShell에서 서비스 시작 및 중지하기

Windows PowerShell로 서비스도 시작하고 중지할 수 있습니다.

Start-ServiceStop-Service cmdlet은 우리가 기대하는 대로 정확히 실행됩니다. 다음으로, 아래의 파이프라인 또는 -Name 매개변수를 사용할 수 있습니다.

## Stop a service
$serviceName = 'wuauserv'
Stop-Service -Name $serviceName

## Stop a service with the pipeline
Get-Service $wuauserv | Stop-Service

모든 *-Service cmdlet은 -Name-DisplayName 매개변수를 사용하여 서비스 이름 값을 탭 완성할 수 있도록 해줍니다. -Name 매개변수를 입력한 후 공백을 추가하고 Tab 키를 누르십시오.

우리는 로컬 컴퓨터의 모든 서비스를 자전거처럼 순환하는 것을 볼 수 있습니다. 같은 개념은 서비스 시작에도 적용됩니다.

## Start a service
$serviceName = 'wuauserv'
Start-Service -Name $serviceName

## Start service with the pipeline
Get-Service $wuauserv | Start-Service

Start-ServiceStop-Service 명령은 항등적이므로, 서비스가 시작되거나 중지된 후, 이미 그 상태일 때 서비스를 중지하거나 시작하려고 하면 cmdlet은 서비스를 건너뛰게 됩니다.

PowerShell로 원격 서비스를 중지하고 시작하려면, 다시 이 명령들을 스크립트 블록에 래핑하고 PowerShell 원격을 사용하여 원격으로 호출해야 합니다. 아래와 같이 보여줍니다.

$cred = Get-Credential
$serviceName = 'wuauserv'
Invoke-Command -ComputerName SRV02 -ScriptBlock { Start-Service -Name $using:serviceName } -Credential $cred

PowerShell에서 서비스 재시작하기

Windows PowerShell로 서비스를 재시작하기 위한 코드 재사용을 제한하려면, Restart-Service cmdlet을 사용하는 것이 좋습니다. 이 cmdlet은 우리가 생각하는 대로 정확히 작동하며 다른 서비스 명령과 유사하게 작동합니다.

예를 들어, 위의 이전 예제에서 보였듯이 wuauserv 서비스를 시작하고 중지하려고 한다면, Get-Service의 출력을 Restart-Service로 직접 파이프하여 일부 코드를 절약할 수 있습니다. 아래와 같이 보여줍니다.

## Restart a service with the Name parameter
$serviceName = 'wuauserv'
Get-Service -Name $serviceName | Restart-Service

PowerShell에서 서비스의 시작 유형 변경하기

서비스의 시작 유형은 Windows가 부팅될 때 서비스가 어떻게 작동하는지를 결정하는 속성입니다. 따라서 우리는 다시 몇 가지 옵션이 있습니다.

  • 자동: Windows가 부팅될 때 서비스가 자동으로 시작됩니다.
  • 비활성화: 서비스는 변경되지 않는 한 절대 시작되지 않습니다.
  • 수동: 서비스는 시작할 수 있지만 수동으로 이루어져야 합니다.
  • 자동 - 지연: Windows가 부팅될 때 자동으로 시작되지만 지연됩니다.

먼저 시작 유형이 무엇인지 알아야 합니다. 이것은 Get-Service로 확인할 수 있습니다.

시작 유형을 찾기 위해 Get-Service를 사용하는 경우, Get-Service가 이를 상태라고 부르며 상태 속성으로 표시됩니다.

(Get-Service -Name wuauserv | select *).StartType

출력:

Manual

현재 시작 유형을 알게 되면, Set-Service를 사용하여 이를 변경할 수 있습니다. 아래 예제는 시작 유형을 자동으로 설정하는 것입니다.

Set-Service -Name <service name> -StartupType Automatic
튜토리얼이 마음에 드시나요? DelftStack을 구독하세요 YouTube에서 저희가 더 많은 고품질 비디오 가이드를 제작할 수 있도록 지원해주세요. 구독하다
Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

관련 문장 - PowerShell Service