如何使用Powershell授予远程启动/停止服务的权限?

前端之家收集整理的这篇文章主要介绍了如何使用Powershell授予远程启动/停止服务的权限?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们有一个Power Shell脚本,可以在另一台计算机上重新启动服务.当我们使用PowerShell的内置服务控件cmdlet时,如下所示:
$svc = Get-Service -Name MyService -ComputerName myservicehostname
Stop-Service -InputObject $svc
Start-Service -InputObject $svc

我们收到此错误

Stop-Service : Cannot open MyService service on computer ‘myservicehostname’.

但是,当我们使用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(枚举从属服务). PowerShell cmdlet似乎需要在启动/停止时查看相关服务.

这是我更新的subinacl命令:

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

如果您不想下载/使用subinacl.exe,可以通过Carbon模块的Grant-ServiceControlPermissionGrant-ServicePermission功能使用PowerShell. (免责声明:我是Carbon项目的所有者/维护者.)

猜你在找的Windows相关文章