Mamy skrypt PowerShell, który ponownie uruchamia usługę na innym komputerze. Gdy używamy wbudowanych poleceń cmdlet kontroli usług PowerShell, to tak:
$svc = Get-Service -Name MyService -ComputerName myservicehostname
Stop-Service -InputObject $svc
Start-Service -InputObject $svc
Otrzymujemy ten błąd z powrotem:
Stop-Service: Nie można otworzyć usługi MyService na komputerze „myservicehostname”.
Jednak gdy używamy sc.exe, to tak:
C:\Windows\System32\sc \\myservicehostname stop MyService
C:\Windows\System32\sc \\myservicehostname start MyService
początek i koniec sukcesu.
Użytkownik wykonujący restartowanie nie jest administratorem. Korzystamy z subinacl, aby przyznać użytkownikowi uprawnienia do uruchamiania / zatrzymywania i wysyłania zapytań do usługi:
subinacl.exe /service MyService /GRANT=MyServiceControlUser=STO
Dlaczego PowerShell nie może zatrzymać mojej usługi, ale sc.exe
może?