Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Phần Mềm

Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt

Các ứng dụng đang chạy bạn thấy trên màn hình chỉ là một phần nhỏ những gì đang diễn ra trong Windows. Từ quản lý driver thiết bị đến đảm bảo bảo mật, một đám tiến trình nền (background processes) duy trì một PC Windows hoạt động.

Đối với bất kỳ quản trị viên hệ thống nào giám sát nhiều máy tính, việc có thể xem trạng thái các dịch vụ quan trọng này là quan trọng. Cách tiếp cận Task Manager quá chậm cho việc này, và bạn không thể tự động hóa nó bằng script.

Giải pháp? Công cụ dòng lệnh. Sử dụng Command Prompt hoặc PowerShell, bạn có thể nhanh chóng nắm bắt trạng thái các dịch vụ Microsoft vận hành trên hệ thống, giúp bạn chẩn đoán sự cố nhanh chóng.

Liệt kê Dịch vụ Windows trong Command Prompt

Mặc dù không linh hoạt hay mạnh mẽ bằng Windows PowerShell, Command Prompt vẫn là công cụ tuyệt vời cho quản trị viên hệ thống. Bạn có thể dùng lệnh queryex (hoặc sc queryex) để lấy trạng thái cả dịch vụ đang hoạt động và bị vô hiệu hóa, sau đó dùng lệnh taskkill để kết thúc tiến trình phiền toái.

  1. Để dùng lệnh queryex, chạy Command Prompt với quyền Administrator. Bạn tìm app bằng cách tìm cmd trong menu Start.
Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt
  1. Có nhiều cách dùng lệnh sc queryex. Type (Loại) và State (Trạng thái) là hai tham số thường dùng nhất. Ví dụ, nhập lệnh sau để xem tất cả tiến trình Windows:

sc queryex type=service state=all

Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt
  1. Chế độ xem mặc định có thể hơi choáng ngợp. Bạn có thể chỉ hiển thị tên tiến trình để danh sách dễ phân tích hơn:

sc queryex type=service state=all | find /i "SERVICE_NAME:"

Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt
  1. Mặc định, lệnh liệt kê tất cả tiến trình hoạt động. Để tìm tiến trình không hoạt động, sửa tham số state:

sc queryex type=service state=inactive

Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt
  1. Bạn cũng có thể truy vấn trạng thái tiến trình cụ thể bằng tên. Điều này cực kỳ hữu ích cho quản trị viên, vì họ có thể thiết lập file batch để kiểm tra nhiều tiến trình cùng lúc. Ví dụ:

sc query DeviceInstall

Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt

Liệt kê Dịch vụ Windows trong PowerShell

PowerShell được thiết kế như một shell dòng lệnh chuyên dụng cho Windows hiện đại. Vì vậy, nó cung cấp truy cập vào hầu như mọi thành phần hệ điều hành qua lệnh, và dịch vụ Windows không ngoại lệ.

Ưu điểm của PowerShell là bạn có thể tự động hóa nó dễ dàng. Tất cả lệnh PowerShell có thể biên dịch thành script phức tạp, cho phép thiết lập tác vụ quản trị hệ thống trên nhiều PC mà không rắc rối.

  1. Bắt đầu bằng mở PowerShell. Bạn tìm trong Menu Start; chỉ cần chắc chắn chạy phiên bản nâng cao (elevated instance) (tức là với quyền Administrator).
Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt
  1. Lệnh đơn giản nhất để liệt kê dịch vụ Windows trên PowerShell là Get-Service. Nó hiển thị tất cả dịch vụ trên máy tính, cùng với trạng thái và tên. Vấn đề duy nhất là danh sách dịch vụ có thể khá dài.
Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt
  1. Khi dùng Get-Service, ý tưởng tốt hơn là xuất danh sách ra file văn bản. Bạn làm được điều này dùng pipe (ống dẫn), như sau:

Get-Service | Out-File "C:\logs\All_Services.txt"

Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt
  1. Để tra cứu trạng thái dịch vụ cụ thể, theo lệnh Get-Service với tên dịch vụ. Bạn có thể yêu cầu trạng thái nhiều tiến trình bằng cách tách tên bằng dấu phẩy.

Get-Service CryptSvc, COMSysApp

Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt
  1. Pipe cũng có thể dùng để kết hợp cmdlet Get-Service với hàm Where-Object và lọc kết quả theo Status. Lệnh sau minh họa bằng cách lấy tất cả dịch vụ Running (Đang chạy):

Get-Service | Where-Object {$_.Status -EQ "Running"}

Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt

Kiểm tra Phụ thuộc Dịch vụ (Service Dependencies)

Mọi tiến trình phức tạp đều chia thành nhiều dịch vụ phụ thuộc lẫn nhau. Đây là lý do việc chỉ lấy trạng thái dịch vụ cụ thể thường không đủ. Bạn cũng cần kiểm tra trạng thái các dịch vụ mà dịch vụ đó phụ thuộc vào.

  1. Để xem các dịch vụ được yêu cầu bởi một dịch vụ cụ thể, dùng cờ -RequiredServices với cmdlet Get-Service. Ví dụ:

Get-Service -Name CryptSvc –RequiredServices

Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt
  1. Tương tự, để lấy danh sách dịch vụ phụ thuộc vào một dịch vụ cụ thể, tận dụng cờ -DependentServices.

Get-Service -Name CryptSvc -DependentServices

Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt

Hai cờ này quan trọng trong viết script để tự động bắt đầu hoặc dừng dịch vụ Windows, vì chúng cho bạn cách theo dõi tất cả dịch vụ liên quan đến dịch vụ bị ảnh hưởng.

Liệt kê Dịch vụ Windows trên Máy tính Từ xa (Remote Computers)

Phương pháp PowerShell không giới hạn ở máy cục bộ. Bạn có thể dùng cmdlet Get-Service với cùng cú pháp đã mô tả để truy vấn tiến trình của PC từ xa. Chỉ cần thêm cờ -ComputerName ở cuối để chỉ định máy tính từ xa nào để lấy thông tin.

Ví dụ:

get-service CryptSvc -ComputerName Workstation7

Quản lý Dịch vụ Windows trong PowerShell

Lấy trạng thái dịch vụ không phải điều duy nhất bạn làm được trong Windows PowerShell. Là môi trường scripting đầy đủ, nó cung cấp script thay thế cho tất cả tùy chọn GUI.

Cmdlet PowerShell có thể dừng, bắt đầu, khởi động lại, hoặc thậm chí sửa đổi dịch vụ. Kết hợp với lệnh Get-Service tự động, script PowerShell có thể viết để tự động hóa hoàn toàn tác vụ quản trị hệ thống hàng ngày.

  1. Ngoài truy vấn trạng thái dịch vụ, bạn cũng có thể dùng PowerShell để quản lý chúng. Bắt đầu hoặc dừng dịch vụ có thể làm với một lệnh đơn, chỉ cần tên dịch vụ. Ví dụ, đây là cách dừng dịch vụ:

Stop-Service -Name Spooler

Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt
  1. Khởi động dịch vụ tương tự:

Start-Service -Name Spooler

Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt
  1. Nếu dịch vụ không hoạt động đúng, bạn cũng có thể chọn khởi động lại:

Restart-Service -Name Spooler

Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt
  1. Cũng có cmdlet Set-Service dùng để thay đổi thuộc tính dịch vụ. Ở đây chúng ta vô hiệu hóa khởi động tự động của dịch vụ Print Spooler:

Set-Service 'Spooler' -StartupType Disabled

Dễ dàng Liệt kê Tất cả Dịch vụ Windows bằng PowerShell hoặc Command Prompt

Cách Tốt Nhất để Liệt kê Dịch vụ Windows là gì?

Dù bạn chạy Windows 10 hay Windows Server, việc xem danh sách tất cả dịch vụ Windows có thể rất tiện. Bạn có thể chẩn đoán sự cố với chức năng hệ thống quan trọng hoặc dừng dịch vụ Microsoft không cần thiết để cải thiện hiệu suất.

cho mục đích này, PowerShell là lựa chọn tốt nhất. Mặc dù bạn có thể lấy danh sách dịch vụ trong Command Prompt, chức năng bổ sung của PowerShell hữu ích hơn.

Bạn có thể dùng cmdlet PowerShell để lấy trạng thái dịch vụ của tiến trình Windows, lọc theo trạng thái hoặc tham số khác. Việc xác định dịch vụ phụ thuộc và bắt đầu/dừng chúng theo yêu cầu cũng dễ dàng.