加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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

发布时间:2020-12-13 19:32:42 所属栏目:Windows 来源:网络整理
导读:我们有一个Power Shell脚本,可以在另一台计算机上重新启动服务.当我们使用PowerShell的内置服务控件cmdlet时,如下所示: $svc = Get-Service -Name MyService -ComputerName myservicehostnameStop-Service -InputObject $svcStart-Service -InputObject $sv
我们有一个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:WindowsSystem32sc myservicehostname stop MyService
C:WindowsSystem32sc 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-ServiceControlPermission或Grant-ServicePermission功能使用PowerShell. (免责声明:我是Carbon项目的所有者/维护者.)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读