다음을 통해 공유


서비스 관리

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

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

다음 명령은 종속성이 있는 모든 서비스를 가져옵니다. 서비스의 상태, 이름, RequiredServicesDependentServices 속성을 표시하는 Format-Table cmdlet입니다.

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...

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

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

서비스 속성 설정

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

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

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

참고하십시오