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?
quelle
subinacl
. Was für ein nützliches Dienstprogramm! Vielen Dank, dass Sie zurückgekommen sind, um diese Informationen für den Rest von uns zu hinterlassen.Der folgende Befehl funktioniert wie erwartet auf meinem Windows Server 2008 R2-Computer.
Können Sie diesen einmaligen Befehl auch versuchen, um festzustellen, ob dies funktioniert, und haben Sie überprüft, ob der Benutzer Mitglied einer Gruppe ist, die Mitglied der Benutzergruppe auf den Zielservern ist?
quelle