sc.exe, Get-Service, và công cụ này
Cả hai đều đã có sẵn trên máy, và cả hai sẽ vẫn hữu ích. Trang này nói về chỗ chúng dừng lại - và nói thẳng chỗ nào chúng vẫn là câu trả lời tốt hơn.
Mỗi cái dừng lại ở đâu
sc.exe
Nó chạm tới hầu hết mọi thứ mà trình quản lý điều khiển dịch vụ biết, và không cho bạn biết gì về cách hỏi. Cú pháp từ thập niên chín mươi - sc config X start= auto, trong đó dấu cách sau dấu bằng là bắt buộc và việc thiếu nó là một thất bại thầm lặng trong việc làm điều bạn muốn.
Nó trả lời về một mục mỗi lần. Không có bộ lọc, không có đầu ra mà script phân tích được nếu không viết một trình phân tích, và không có xem trước: sc stop hoặc là chạy hoặc là trả về một con số.
Get-Service và các cmdlet *-Service
Đối tượng thực thụ, một pipeline, và một cái nhìn nông. Trong Windows PowerShell 5.1, bản đi kèm Windows, Get-Service không hiển thị tài khoản mà một dịch vụ chạy hay mô tả của nó. PowerShell 7 hiển thị cả hai, cùng cả đường dẫn khởi chạy, và được cài riêng.
Stop-Service -Force nghĩa là "ngay cả khi có thứ phụ thuộc vào nó" - nó dừng các dịch vụ phụ thuộc, và nói với bạn sau đó thay vì trước.
Cùng những câu hỏi, ba cách
| Câu hỏi | Với những gì có trên máy | Ở đây |
|---|---|---|
| Những gì lẽ ra phải chạy mà không chạy | Get-Service | Where-Object { $_.StartType -eq 'Automatic' -and $_.Status -ne 'Running' } |
bws list --query "start:auto !status:running" |
| Những dịch vụ nào có tệp thực thi chưa ký | Đọc từng đường dẫn khởi chạy, phân giải nó, gọi Get-AuthenticodeSignature trên từng cái - một script, không phải một lệnh |
bws list --query "signed:no" |
| Việc dừng cái này sẽ kéo theo những gì | sc enumdepend X, rồi đọc danh sách và tự quyết định |
bws stop X --dry-run --dependents, chính là kế hoạch sẽ chạy |
| Điều gì đã thay đổi từ tuần trước | Không có gì, trừ khi bạn tự viết bộ thu thập | bws snapshot diff before.json --live |
| Ai đã đổi kiểu khởi động, và khi nào | Get-WinEvent -FilterHashtable @{ LogName = 'System'; Id = 7040 }, rồi đọc thông điệp của từng sự kiện |
bws history Spooler, dòng đầu của nó nói nhật ký lùi xa đến đâu |
| Đầu ra máy đọc được | Đối tượng từ PowerShell, văn bản từ sc.exe |
--json ở mọi lệnh, trên đầu ra chuẩn, với cảnh báo trên lỗi chuẩn |
Chỗ nào công cụ này bất đồng với sc.exe về một dịch vụ, đó là một lỗi ở đây. Một phần bộ kiểm thử chạy cả hai trên máy mà nó đang chạy và so sánh từng mục, và một khác biệt giữa hai bên là điều hữu ích nhất để đưa vào một báo cáo sự cố.
Khi nào nên tiếp tục dùng thứ bạn đang có
- Bạn đang ở trên một máy mà bạn chỉ chạm vào một lần. Cả hai đã có sẵn ở đó và không gì phải vượt qua một chính sách.
- Bạn cần thay đổi tài khoản, đường dẫn khởi chạy hoặc hành động khôi phục.
sc.exelàm được cả ba. Công cụ này hiển thị tài khoản và đường dẫn khởi chạy và không thay đổi cái nào, và chỉ đọc hành động khôi phục để cảnh báo trước khi kết thúc một tiến trình. - Bạn cần tạo hoặc xóa một dịch vụ.
sc createvàsc delete. Không có ở đây, có chủ ý. - Bạn đã ở sâu trong một pipeline PowerShell.
bws list --jsontrở về dưới dạng đối tượng quaConvertFrom-Json, nên nó tham gia vào pipeline chứ không thay thế nó.
Cùng nhau, thay vì thay thế
Công cụ trả lời máy này có gì sai và các công cụ thay đổi một thiết lập không phải cùng một công cụ. Hãy đặt câu hỏi ở đây, đọc kế hoạch ở đây, và dùng bất cứ thứ gì bạn thích để thực hiện - kế hoạch in ra dòng lệnh yêu cầu điều tương tự, và dòng đó được tạo ra để sao chép.