Wir haben ein PowerShell-Skript, das einen Dienst auf einem anderen Computer neu startet. Wenn wir die in PowerShell integrierten Cmdlets für die Dienststeuerung verwenden, gehen Sie wie folgt vor:
$svc = Get-Service -Name MyService -ComputerName myservicehostname
Stop-Service -InputObject $svc
Start-Service -InputObject $svc
Wir bekommen diesen Fehler zurück:
Stop-Service: Der MyService-Dienst kann auf dem Computer 'myservicehostname' nicht geöffnet werden.
Wenn wir jedoch sc.exe verwenden, wie folgt:
C:\Windows\System32\sc \\myservicehostname stop MyService
C:\Windows\System32\sc \\myservicehostname start MyService
Start und Stopp sind erfolgreich.
Der Benutzer, der den Neustart durchführt, ist kein Administrator. Wir verwenden subinacl, um dem Benutzer die Berechtigung zum Starten / Stoppen und Abfragen des Dienstes zu erteilen:
subinacl.exe /service MyService /GRANT=MyServiceControlUser=STO
Wie kommt es, dass PowerShell meinen Dienst nicht stoppen sc.exe
kann, aber kann?