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?
źródło
subinacl
. Cóż za przydatne narzędzie! Dziękujemy za powrót i pozostawienie tych informacji reszcie z nas.Następujące polecenie działa zgodnie z oczekiwaniami na moim komputerze z systemem Windows Server 2008 R2.
Czy możesz również wypróbować to jednorazowe polecenie, aby sprawdzić, czy to działa, i czy sprawdziłeś, czy użytkownik jest członkiem grupy, która jest członkiem grupy Użytkownicy na serwerach docelowych?
źródło