Powershell을 사용하여 서비스를 원격으로 시작 / 중지 할 수있는 권한을 부여하려면 어떻게합니까? 오류가 다시

다른 컴퓨터에서 서비스를 다시 시작하는 PowerShell 스크립트가 있습니다. PowerShell의 기본 제공 서비스 제어 cmdlet을 사용하는 경우 다음과 같습니다.

$svc = Get-Service -Name MyService -ComputerName myservicehostname
Stop-Service -InputObject $svc
Start-Service -InputObject $svc

이 오류가 다시 발생합니다.

Stop-Service : ‘myservicehostname’컴퓨터에서 MyService 서비스를 열 수 없습니다.

그러나 sc.exe를 사용하면 다음과 같이됩니다.

C:\Windows\System32\sc \\myservicehostname stop MyService
C:\Windows\System32\sc \\myservicehostname start MyService

시작과 중지가 성공합니다.

다시 시작하는 사용자 는 관리자 가 아닙니다 . subinacl을 사용하여 서비스를 시작 / 중지하고 쿼리 할 수있는 권한을 사용자에게 부여합니다.

subinacl.exe /service MyService /GRANT=MyServiceControlUser=STO

PowerShell은 어떻게 서비스를 중지 sc.exe할 수는 없습니까?



답변

충분한 권한을 부여하지 않은 것으로subinacl 나타났습니다 . 권한 부여 조치에 가능한 액세스 값은 다음과 같습니다.

    F : Full Control
    R : Generic Read
    W : Generic Write
    X : Generic eXecute
  or any following values
    L : Read controL
    Q : Query Service Configuration
    S : Query Service Status
    E : Enumerate Dependent Services
    C : Service Change Configuration
    T : Start Service
    O : Stop Service
    P : Pause/Continue Service
    I : Interrogate Service
    U : Service User-Defined Control Commands  

내가 사용하던 S (쿼리 서비스 상태), T (서비스 시작)와 O (서비스 중지)를. 나는 또한 E (Equirate Dependent Services)가 필요했습니다. PowerShell cmdlet은 시작 / 중지 할 때 종속 서비스를 확인해야합니다.

업데이트 된 subinacl명령은 다음과 같습니다 .

subinacl.exe /service MyService /GRANT=MyServiceControlUser=STOE

다운로드 / 사용하지 않으려는 경우 카본 모듈의 Grant-ServiceControlPermission 또는 Grant-ServicePermission 함수 subinacl.exe를 통해 PowerShell을 사용할 수 있습니다 . (면책 조항 : 저는 Carbon 프로젝트의 소유자 / 유지 자입니다.)


답변

다음 명령은 Windows Server 2008 R2 컴퓨터에서 예상대로 작동합니다.

Start-Service -InputObject $(Get-Service -Computer [ComputerName] -Name spooler)  

이 일회용 명령을 사용해도 작동하는지 확인할 수 있으며, 사용자가 대상 서버에서 Users 그룹의 구성원 인 그룹의 구성원인지 확인 했습니까?


답변