У нас есть сценарий PowerShell, который перезапускает службу на другом компьютере. Когда мы используем встроенные командлеты управления службами PowerShell, вот так:
$svc = Get-Service -Name MyService -ComputerName myservicehostname
Stop-Service -InputObject $svc
Start-Service -InputObject $svc
Мы получаем эту ошибку обратно:
Stop-Service: не удается открыть службу MyService на компьютере «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
может?