Làm cách nào để tôi cấp quyền để bắt đầu / dừng dịch vụ từ xa bằng Powershell?


10

Chúng tôi có tập lệnh PowerShell khởi động lại dịch vụ trên một máy tính khác. Khi chúng tôi sử dụng các lệnh ghép ngắn kiểm soát dịch vụ tích hợp của PowerShell, như vậy:

$svc = Get-Service -Name MyService -ComputerName myservicehostname
Stop-Service -InputObject $svc
Start-Service -InputObject $svc

Chúng tôi nhận được lỗi này trở lại:

Dừng dịch vụ: Không thể mở dịch vụ MyService trên máy tính 'myservicehostname'.

Tuy nhiên, khi chúng tôi sử dụng sc.exe, như vậy:

C:\Windows\System32\sc \\myservicehostname stop MyService
C:\Windows\System32\sc \\myservicehostname start MyService

sự khởi đầu và dừng lại thành công

Người dùng thực hiện khởi động lại không phải là quản trị viên. Chúng tôi sử dụng subinacl để cấp quyền cho người dùng bắt đầu / dừng và truy vấn dịch vụ:

subinacl.exe /service MyService /GRANT=MyServiceControlUser=STO

Tại sao PowerShell không thể dừng dịch vụ của tôi nhưng sc.execó thể?

Câu trả lời:


20

Hóa ra tôi đã không cung cấp đủ quyền vớisubinacl . Các giá trị truy cập có thể có cho hành động cấp là:

    F : Full Control  
    R : Generic Read  
    W : Generic Write  
    X : Generic eXecute  
  or any following values  
    L : Read controL  
    Q : Query Service Configuration  
    S : Query Service Status  
    E : Enumerate Dependent Services  
    C : Service Change Configuration  
    T : Start Service  
    O : Stop Service  
    P : Pause/Continue Service  
    I : Interrogate Service  
    U : Service User-Defined Control Commands  

Tôi đã sử dụng S (Trạng thái dịch vụ truy vấn), T (Dịch vụ bắt đầu) và O (Dừng dịch vụ). Tôi cũng cần E (Dịch vụ phụ thuộc liệt kê). Dường như các lệnh ghép ngắn PowerShell cần xem xét các dịch vụ phụ thuộc khi bắt đầu / dừng.

Đây là subinacllệnh cập nhật của tôi :

subinacl.exe /service MyService /GRANT=MyServiceControlUser=STOE

Nếu bạn không muốn tải xuống / sử dụng subinacl.exe, bạn có thể sử dụng PowerShell thông qua các chức năng Grant-ServiceControlPermission hoặc Grant-ServicePermission của mô-đun Carbon . (TUYÊN BỐ TỪ CHỐI: Tôi là chủ sở hữu / người duy trì dự án Carbon.)


Vui lòng đánh dấu đây là câu trả lời đúng của bạn. Đây là một sự trợ giúp lớn cho tôi cho cùng một vấn đề chính xác :)
Alain O'Dea

Tôi chưa bao giờ nghe nói subinacltrước đây. Thật là một tiện ích hữu ích! Cảm ơn bạn đã quay trở lại để lại thông tin này cho phần còn lại của chúng tôi.
Dan

Hoạt động tuyệt vời trong môi trường không thuộc miền với máy chủ Windows 2016 để kiểm soát các dịch vụ trên máy tính từ xa.
Doug Knudsen

0

Lệnh sau hoạt động như mong đợi trên máy Windows Server 2008 R2 của tôi.

Start-Service -InputObject $(Get-Service -Computer [ComputerName] -Name spooler)  

Bạn cũng có thể thử lệnh một lần này để xác định xem nó có hoạt động không, và bạn đã xác minh rằng người dùng là thành viên của nhóm là thành viên của nhóm Người dùng trên máy chủ mục tiêu chưa?


Snipped của bạn không làm việc cho tôi. Do yêu cầu bảo mật, tôi không thể biến người dùng thành thành viên của nhóm Người dùng (hoặc bất kỳ nhóm Windows tích hợp nào).
các mảnh vỡ rải rác
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.