서비스 관리

이 샘플은 Windows PowerShell 5.1에만 적용됩니다.

다양한 서비스 작업을 위해 설계된 8개의 핵심 Service cmdlet이 있습니다. 이 문서에서는 서비스의 실행 상태 나열 및 변경만 살펴봅니다. Get-Command *-Service를 사용하여 서비스 cmdlet 목록을 가져올 수 있습니다. Get-Help New-Service와 같은 Get-Help <Cmdlet-Name>을 사용하여 각 cmdlet에 대한 정보를 찾을 수 있습니다.

서비스 가져오기

Get-Service cmdlet을 사용하여 로컬 또는 원격 컴퓨터에 있는 서비스를 가져올 수 있습니다. 마찬가지로 Get-Process매개 변수 없이 명령을 사용하면 Get-Service 모든 서비스가 반환됩니다. 별표가 와일드로 사용되더라도 이름으로 필터링할 수 카드.

PS> Get-Service -Name se*

Status   Name               DisplayName
------   ----               -----------
Running  seclogon           Secondary Logon
Running  SENS               System Event Notification
Stopped  ServiceLayer       ServiceLayer

서비스의 실제 이름이 항상 명백한 것은 아니기 때문에 서비스를 표시 이름으로 찾아야 할 수도 있습니다. 특정 이름으로 검색하거나 와일드카드를 사용하거나 표시 이름 목록을 제공할 수 있습니다.

PS> Get-Service -DisplayName se*

Status   Name               DisplayName
------   ----               -----------
Running  lanmanserver       Server
Running  SamSs              Security Accounts Manager
Running  seclogon           Secondary Logon
Stopped  ServiceLayer       ServiceLayer
Running  wscsvc             Security Center

PS> Get-Service -DisplayName ServiceLayer, Server

Status   Name               DisplayName
------   ----               -----------
Running  lanmanserver       Server
Stopped  ServiceLayer       ServiceLayer

원격 서비스 가져오기

Windows PowerShell에서는 Get-Service cmdlet의 ComputerName 매개 변수를 사용하여 원격 컴퓨터의 서비스를 가져올 수 있습니다. ComputerName 매개 변수는 여러 값과 와일드카드 문자를 받기 때문에 하나의 명령으로 여러 컴퓨터의 서비스를 가져올 수 있습니다. 예를 들어 다음 명령은 Server01 원격 컴퓨터의 서비스를 가져옵니다.

Get-Service -ComputerName Server01

PowerShell 6.0부터는 *-Service cmdlet에 ComputerName 매개 변수가 없습니다. 하지만 PowerShell 원격 서비스를 사용하여 계속해서 원격 컴퓨터의 서비스를 가져올 수 있습니다. 예를 들어, 다음 명령은 Server02 원격 컴퓨터의 서비스를 가져옵니다.

Invoke-Command -ComputerName Server02 -ScriptBlock { Get-Service }

다른 *-Service cmdlet을 사용하여 서비스를 관리할 수도 있습니다. PowerShell 원격 서비스에 대한 자세한 내용은 about_Remote를 참조하세요.

필수 및 종속 서비스 가져오기

Get-Service cmdlet에는 서비스 관리에 매우 유용한 두 개의 매개 변수가 있습니다. DependentServices 매개 변수는 서비스에 종속된 서비스를 가져옵니다.

RequiredServices 매개 변수는 LanmanWorkstation 서비스가 종속된 서비스를 가져옵니다.

PS> Get-Service -Name LanmanWorkstation -RequiredServices

Status   Name               DisplayName
------   ----               -----------
Running  MRxSmb20           SMB 2.0 MiniRedirector
Running  bowser             Bowser
Running  MRxSmb10           SMB 1.x MiniRedirector
Running  NSI                Network Store Interface Service

DependentServices 매개 변수는 LanmanWorkstation 서비스가 필요한 매개 변수를 가져옵니다.

PS> Get-Service -Name LanmanWorkstation -DependentServices

Status   Name               DisplayName
------   ----               -----------
Running  SessionEnv         Terminal Services Configuration
Running  Netlogon           Netlogon
Stopped  Browser            Computer Browser
Running  BITS               Background Intelligent Transfer Ser...

다음 명령은 종속성이 있는 모든 서비스를 가져옵니다. Format-Table cmdlet은 서비스의 Status, Name, RequiredServices, DependentServices 속성을 표시합니다.

Get-Service -Name * | Where-Object {$_.RequiredServices -or $_.DependentServices} |
  Format-Table -Property Status, Name, RequiredServices, DependentServices -auto

서비스 중지, 시작, 일시 중단, 다시 시작

서비스 cmdlet은 모두 동일한 일반 형식을 갖습니다. 서비스는 일반 이름 또는 표시 이름으로 지정할 수 있으며 목록과 와일드 카드 값으로 사용할 수 있습니다. 인쇄 스풀러를 중지하려면 다음을 사용합니다.

Stop-Service -Name spooler

인쇄 스풀러를 중지한 후 다시 시작하려면 다음 명령을 사용합니다.

Start-Service -Name spooler

인쇄 스풀러를 일시 중단하려면 다음을 사용합니다.

Suspend-Service -Name spooler

Restart-Service cmdlet은 다른 Service cmdlet과 동일한 방식으로 작동합니다.

PS> Restart-Service -Name spooler

WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
PS>

인쇄 스풀러 시작에 대한 경고 메시지가 반복적으로 나타납니다. 다소 시간이 걸리는 서비스 작업을 수행하는 경우 PowerShell은 계속 태스크를 시도하고 있음을 알립니다.

여러 서비스를 다시 시작하려면 서비스 목록을 가져와서 필터링한 다음 다시 시작할 수 있습니다.

PS> Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service

WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping...
WARNING: Waiting for service 'Computer Browser (Browser)' to finish stopping...
Restart-Service : can't stop service 'Logical Disk Manager (dmserver)' because
 it has dependent services. It can only be stopped if the Force flag is set.
At line:1 char:57
+ Get-Service | Where-Object -FilterScript {$_.CanStop} | Restart-Service <<<<
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...
WARNING: Waiting for service 'Print Spooler (Spooler)' to finish starting...

이러한 Service cmdlet에는 ComputerName 매개 변수가 없지만 Invoke-Command cmdlet을 사용하여 원격 컴퓨터에서 실행할 수는 있습니다. 예를 들어 다음 명령은 Server01 원격 컴퓨터에서 스풀러 서비스를 다시 시작합니다.

Invoke-Command -ComputerName Server01 {Restart-Service Spooler}

서비스 속성 설정

cmdlet은 Set-Service 로컬 또는 원격 컴퓨터에서 서비스의 속성을 변경합니다. 서비스 상태 속성이므로 이 cmdlet을 사용하여 서비스를 시작, 중지 및 일시 중단할 수 있습니다. Set-Service cmdlet에는 서비스 시작 유형을 변경할 수 있는 StartupType 매개 변수도 있습니다.

Windows Vista 이상에서 Set-Service를 사용하려면 관리자 권한으로 실행 옵션을 사용하여 PowerShell을 엽니다.

자세한 내용은 Set-Service를 참조하세요 .

참고 항목