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