Computer >> 컴퓨터 >  >> 체계 >> Windows Server

PowerShell로 Windows 서비스를 어떻게 관리합니까?

services.msc 스냅인 또는 sc.exe 명령줄 도구뿐만 아니라 PowerShell을 사용하여 Windows 서비스를 관리할 수 있습니다. 이 기사에서는 PowerShell을 사용하여 Windows 서비스를 관리하는 다양한 시나리오를 고려할 것입니다.

Windows 서비스를 관리하는 데 사용되는 PowerShell Cmdlet

Windows 서비스의 상태를 보고 관리하는 8개의 기본 Service cmdlet이 있습니다. 서비스 관리 cmdlet의 전체 목록을 보려면 다음 명령을 실행하십시오.

Get-Help \*-Service

<강한> PowerShell로 Windows 서비스를 어떻게 관리합니까?

  • 서비스 받기 — 실행 중이거나 중지된 상태에서 로컬 또는 원격 컴퓨터에서 서비스를 가져올 수 있습니다.
  • 신규 서비스 – 서비스를 생성합니다. cmdlet은 레지스트리 및 서비스 데이터베이스에 Windows 서비스에 대한 새 항목을 만듭니다.
  • 다시 시작-서비스 – 서비스를 다시 시작합니다. cmdlet은 Windows 서비스 컨트롤러를 통해 다시 시작 메시지를 보냅니다.
  • 이력서 서비스 – 서비스를 재개합니다. cmdlet은 Windows 서비스 관리자에 재개 메시지를 보냅니다.
  • 세트 서비스 — 상태, 설명, 표시된 이름 또는 시작 모드를 포함하여 로컬 또는 원격 서비스의 설정을 변경합니다. 이 cmdlet을 사용하여 서비스를 시작, 중지 또는 일시 중단할 수도 있습니다.
  • 서비스 시작 – 서비스를 시작합니다.
  • 서비스 중지 – 서비스를 중지합니다( cmdlet은 Windows 서비스 관리자에 중지 메시지를 보냅니다).
  • 서비스 중단 – 서비스를 일시 중단합니다. 일시 중단된 서비스는 여전히 실행 중이지만(예:Resume-Service cmdlet 사용) 다시 시작할 때까지 아무 작업도 수행하지 않습니다.

Get-Help와 함께 특정 cmdlet 사용에 대한 자세한 설명과 예를 얻을 수 있습니다.

Get-Help Start-Service

PowerShell로 Windows 서비스를 어떻게 관리합니까?

Get-Service로 Windows 서비스 상태를 확인하는 방법

Get-Service를 사용하여 로컬 또는 원격 컴퓨터에서 서비스 목록 및 해당 상태(실행 중/중지됨)를 가져올 수 있습니다. cmdlet. –이름 매개변수를 사용하면 이름으로 서비스를 선택할 수 있습니다. 서비스 이름은 와일드카드 문자 *를 사용하여 지정할 수 있습니다. .

PowerShell로 Windows 서비스를 어떻게 관리합니까?

정확한 서비스 이름을 모르는 경우 –DisplayName을 사용하여 표시된 이름으로 찾을 수 있습니다. 매개변수. 값 목록과 와일드카드를 사용할 수 있습니다.

PowerShell로 Windows 서비스를 어떻게 관리합니까?

Get-Service 사용 -ComputerName이 있는 cmdlet 원격 컴퓨터의 서비스 상태를 가져오는 매개변수입니다. 쉼표로 구분된 이름을 지정하여 한 번에 여러 원격 컴퓨터의 서비스 상태를 쿼리할 수 있습니다. 예를 들어, 아래 표시된 명령은 원격 컴퓨터 ny-prnt1 및 ny-prnt2에서 스풀러 서비스 상태를 가져옵니다.

Get-Service spooler –ComputerName ny-prnt1,ny-prnt2

Status Name DisplayName
------ ---- -----------
Running spooler Print Spooler
Stopped spooler Print Spooler

서비스의 모든 속성을 표시하려면 객체 선택을 사용합니다. cmdlet:

Get-Service spooler | Select-Object *

PowerShell로 Windows 서비스를 어떻게 관리합니까?

Select-Object cmdlet을 사용하면 서비스의 특정 속성을 가져올 수 있습니다. 예를 들어, 스풀러 서비스의 이름, 상태 및 사용 가능한 옵션을 보고 싶습니다.

Get-Service Spooler | Select DisplayName,Status,ServiceName,Can* 선택

PowerShell로 Windows 서비스를 어떻게 관리합니까?

서비스 받기 cmdlet에는 서비스 종속성을 볼 수 있는 두 개의 매개 변수가 있습니다.

  • -DependentServices 주어진 서비스에 종속된 서비스를 표시할 수 있습니다.
  • -필수 서비스 주어진 서비스가 의존하는 서비스를 표시합니다.

다음 명령은 스풀러 서비스를 시작하는 데 필요한 서비스를 표시합니다.

Get-Service –Name Spooler -RequiredServices

PowerShell로 Windows 서비스를 어떻게 관리합니까?

다음 명령은 스풀러에 의존하는 서비스를 보여줍니다:

Get-Service –Name Spooler -DependentServices

PowerShell로 Windows 서비스를 어떻게 관리합니까?

특정 상태 또는 매개변수가 있는 서비스를 찾으려면 where-Object를 사용하세요. cmdlet. 예를 들어 실행 중인 서비스 목록을 가져오겠습니다.

Get-Service | Where-Object {$_.status -eq 'running'}

PowerShell로 Windows 서비스를 어떻게 관리합니까?

수동 시작 유형으로 서비스를 표시하려면 다음 명령을 실행하십시오.

Get-Service | Where-Object {$_.starttype -eq 'Manual'}

PowerShell로 Windows 서비스를 어떻게 관리합니까?

다음 PowerShell 스크립트를 사용하여 현재 컴퓨터에 특정 Windows 서비스가 있는지 확인하십시오.

if (Get-Service "ServiceTest" -ErrorAction SilentlyContinue)
{
Write-host "ServiceTest exists"
}

PowerShell을 사용하여 서비스를 중지, 시작 또는 다시 시작하는 방법

서비스 중지를 사용하여 서비스를 중지할 수 있습니다. cmdlet. 스풀러를 중지하려면 다음 명령을 실행하십시오.

Stop-Service -Name spooler

Stop-Service cmdlet은 실행 후 아무 것도 표시하지 않습니다. 결과를 보려면 -PassThru를 사용하세요. 매개변수.

PowerShell로 Windows 서비스를 어떻게 관리합니까?

모든 서비스를 중지할 수 있는 것은 아닙니다. 종속 서비스가 있는 경우 오류가 표시됩니다.

Cannot stop service because it has dependent services. It can only be stopped if force flag set.

PowerShell로 Windows 서비스를 어떻게 관리합니까?

서비스를 강제로 중지하려면 –Force 를 사용하십시오. 매개변수. 모든 종속 서비스도 중지됩니다.

Stop-Service samss –Force -Passthru

다음 명령은 "실행 중" 상태인 경우 지정된 서비스(비트, 스풀러)를 중지합니다.

get-service bits,spooler | where {$_.status -eq 'running'} | stop-service –passthru

PowerShell로 Windows 서비스를 어떻게 관리합니까?

때때로 서비스가 "중지" 상태에서 끊기고 강제로 종료되어야 합니다.

서비스 시작 cmdlet은 중지된 서비스를 시작합니다.

Start-Service -Name spooler -PassThru

PowerShell로 Windows 서비스를 어떻게 관리합니까?

종속 서비스가 중지되면 서비스가 시작되지 않습니다. 이들을 찾고 시작하려면 다음 PowerShell 한 줄짜리를 사용하십시오:

get-service samss | Foreach { start-service $_.name -passthru; start-service $_.DependentServices -passthru}

PowerShell로 Windows 서비스를 어떻게 관리합니까?

서비스 일시 중단 cmdlet은 이 상태를 지원하는 경우 서비스를 일시 중지할 수 있습니다. 서비스를 일시 중지할 수 있는지 알아보려면 Get-Service를 사용하세요. CanPauseAndContinue가 있는 cmdlet 재산.

Get-Service samss | Format-List name, canpauseandcontinue

PowerShell로 Windows 서비스를 어떻게 관리합니까?

일시 중지될 수 있는 모든 서비스 목록을 표시하려면 다음 명령을 실행하십시오.

Get-Service | Where-Object {$_.canpauseandcontinue -eq "True"}

PowerShell로 Windows 서비스를 어떻게 관리합니까?

SQLBrowser 서비스를 일시 중단합니다:

Suspend-Service -Name SQLBrowser

PowerShell로 Windows 서비스를 어떻게 관리합니까?

일시 중단된 서비스를 재개하려면 서비스 재개 를 사용하십시오. cmdlet:

Resume-Service -Name SQLBrowser

PowerShell로 Windows 서비스를 어떻게 관리합니까?

다음 명령은 일시 중단된 모든 서비스를 재개합니다.

get-service | where-object {$_.Status -eq "Paused"} | resume-service

다시 시작-서비스 cmdlet이 서비스를 다시 시작합니다.

Restart-Service -Name spooler

PowerShell로 Windows 서비스를 어떻게 관리합니까?

이 명령은 컴퓨터에서 중지된 모든 네트워크 서비스를 시작합니다.

get-service net* | where-object {$_.Status -eq "Stopped"} | restart-service

이러한 명령에는 –ComputerName이 없습니다. 매개 변수이지만 Invoke-Command cmdlet 또는 파이프를 사용하여 원격 컴퓨터에서 실행할 수 있습니다.

예를 들어, 원격 컴퓨터 ny-prnt1에서 인쇄 스풀러를 다시 시작하려면 다음 명령을 실행합니다.
Get-Service Spooler -ComputerName ny-prnt1 | Start-Service

기본적으로 관리자만 Windows 서비스를 시작/중지할 수 있지만 관리자가 아닌 사용자에게 특정 서비스에 대한 시작/중지/다시 시작 권한을 부여할 수 있습니다.

Set-Service를 사용하여 서비스 설정 변경

세트 서비스 cmdlet을 사용하면 로컬 또는 원격 컴퓨터에서 서비스의 모든 매개 변수 또는 설정을 변경할 수 있습니다. 서비스 상태는 속성이므로 이 cmdlet을 사용하여 서비스를 시작, 중지 또는 일시 중단할 수 있습니다. 세트 서비스 -StartupType 있음 서비스의 시작 유형을 변경할 수 있는 매개변수입니다.

스풀러 시작 유형을 자동으로 변경해 보겠습니다.

Set-Service spooler –startuptype automatic –passthru

PowerShell로 Windows 서비스를 어떻게 관리합니까?

수동 시작 유형을 설정할 수 있습니다.

Set-Service spooler –startuptype manual –passthru

PowerShell로 Windows 서비스를 어떻게 관리합니까?

PowerShell을 통해 Windows 서비스를 생성 또는 삭제하는 방법

신규 서비스 – Windows에서 새 서비스를 만드는 cmdlet입니다. 새 서비스의 이름과 실행 파일을 지정합니다(Windows 서비스로 PowerShell 스크립트를 실행할 수도 있음).

TestSvc라는 이름으로 새 서비스를 만들어 보겠습니다.

new-service -name TestSvc -binaryPathName "C:\WINDOWS\System32\svchost.exe -k netsvcs"

PowerShell로 Windows 서비스를 어떻게 관리합니까?

Get-WmiObject cmdlet을 사용하여 서비스의 시작 유형 및 설명에 대한 정보를 가져옵니다.

get-wmiobject win32_service -filter "name='testservice'"

PowerShell로 Windows 서비스를 어떻게 관리합니까?

다음 명령을 사용하여 새 서비스의 설정을 변경할 수 있습니다.

Set-Service -Name TestSvc -Description ‘My Service’ -StartupType Manual

PowerShell로 Windows 서비스를 어떻게 관리합니까?

서비스를 삭제하려면 다음 명령을 실행하십시오.

(Get-WmiObject win32_service -Filter ″name=′TestSvc′″).delete()

Windows 서비스를 실행하는 사용자 계정 변경

PowerShell을 사용하여 서비스를 시작하는 데 사용되는 사용자 계정을 변경할 수 있습니다. TestSvc를 시작하는 데 사용된 계정의 이름을 가져옵니다.

get-wmiobject win32_service -filter "name='TestSvc'" | Select name,startname 선택

PowerShell로 Windows 서비스를 어떻게 관리합니까?

Windows 서비스의 사용자 이름과 암호를 변경하려면 다음 명령을 실행하십시오.

$svc = get-wmiobject win32_service -filter "name='TestSvc'"
$svc.GetMethodParameters("change")

Change() 메서드 매개변수 목록이 표시됩니다. StartName 및 StartPassword 매개변수가 있는 위치를 계산합니다. 매개변수는 20 번째 에 위치합니다. 및 21 st 각각의 장소입니다.

PowerShell로 Windows 서비스를 어떻게 관리합니까?

$svc | Invoke-WmiMethod -Name Change –ArgumentList @ ($null,$null,$null,$null,$null,$null,$null, $null,$null,$null,$null,$null,$null,$null,$null,$null, $null,$null,$null,"Administrator","!123Pa$$w0rd")

또는 gMSA 계정의 이름을 입력할 수 있습니다(이 경우 계정 암호는 지정되지 않음).

보시다시피 PowerShell을 사용하면 Windows 서비스를 쉽게 관리할 수 있습니다. 서비스를 생성, 중지, 시작 또는 재개하고 속성을 변경할 수 있습니다. 대부분의 cmdlet을 사용하면 원격 컴퓨터에서 서비스를 관리할 수 있습니다.