Abbiamo uno script PowerShell che riavvia un servizio su un altro computer. Quando utilizziamo i cmdlet di controllo del servizio integrati di PowerShell, in questo modo:
$svc = Get-Service -Name MyService -ComputerName myservicehostname
Stop-Service -InputObject $svc
Start-Service -InputObject $svc
Riceviamo questo errore:
Stop-Service: impossibile aprire il servizio MyService sul computer "myservicehostname".
Tuttavia, quando usiamo sc.exe, in questo modo:
C:\Windows\System32\sc \\myservicehostname stop MyService
C:\Windows\System32\sc \\myservicehostname start MyService
l'inizio e l'arresto hanno esito positivo.
L'utente che esegue il riavvio non è un amministratore. Usiamo subinacl per concedere all'utente le autorizzazioni per avviare / arrestare e interrogare il servizio:
subinacl.exe /service MyService /GRANT=MyServiceControlUser=STO
Come mai PowerShell non può interrompere il mio servizio ma sc.exe
può?