เรามีสคริปต์ PowerShell ที่รีสตาร์ทบริการบนคอมพิวเตอร์เครื่องอื่น เมื่อเราใช้ cmdlet การควบคุมการบริการในตัวของ PowerShell เช่น:
$svc = Get-Service -Name MyService -ComputerName myservicehostname
Stop-Service -InputObject $svc
Start-Service -InputObject $svc
เราได้รับข้อผิดพลาดนี้กลับมา:
Stop-Service: ไม่สามารถเปิดบริการ MyService บนคอมพิวเตอร์ 'myservicehostname'
อย่างไรก็ตามเมื่อเราใช้ sc.exe เช่นนั้น:
C:\Windows\System32\sc \\myservicehostname stop MyService
C:\Windows\System32\sc \\myservicehostname start MyService
การเริ่มต้นและหยุดสำเร็จ
ผู้ใช้ที่ทำการรีสตาร์ทไม่ใช่ผู้ดูแลระบบ เราใช้ subinacl เพื่อให้สิทธิ์แก่ผู้ใช้ในการเริ่ม / หยุดและสอบถามบริการ:
subinacl.exe /service MyService /GRANT=MyServiceControlUser=STO
ทำไม PowerShell ถึงหยุดบริการไม่ได้ แต่sc.exe
ทำได้?