Tenemos un script de PowerShell que reinicia un servicio en otra computadora. Cuando usamos los cmdlets de control de servicio integrados de PowerShell, así:
$svc = Get-Service -Name MyService -ComputerName myservicehostname
Stop-Service -InputObject $svc
Start-Service -InputObject $svc
Recibimos este error:
Stop-Service: No se puede abrir el servicio MyService en la computadora 'myservicehostname'.
Sin embargo, cuando usamos sc.exe, así:
C:\Windows\System32\sc \\myservicehostname stop MyService
C:\Windows\System32\sc \\myservicehostname start MyService
El comienzo y la parada tienen éxito.
El usuario que reinicia no es un administrador. Usamos subinacl para otorgar permisos de usuario para iniciar / detener y consultar el servicio:
subinacl.exe /service MyService /GRANT=MyServiceControlUser=STO
¿Cómo es que PowerShell no puede detener mi servicio pero sí sc.exe
puede?