Trong quản trị hệ thống Windows, việc khởi động lại dịch vụ là thao tác thường xuyên. Lệnh Restart-Service PowerShell cung cấp giải pháp mạnh mẽ và linh hoạt để kiểm soát dịch vụ một cách tự động, nhanh chóng. Không chỉ đơn thuần là restart, lệnh này còn kết hợp dừng và khởi động dịch vụ trong một câu lệnh, giúp tiết kiệm thời gian và tránh sai sót khi thao tác thủ công.
Restart-Service Trong PowerShell Là Gì?

Restart-Service là một cmdlet thuộc module Microsoft.PowerShell.Management, cho phép quản trị viên gửi tín hiệu dừng và khởi động lại một hoặc nhiều dịch vụ Windows. Khác với việc dùng net stop và net start rời rạc, lệnh này đảm bảo quá trình diễn ra liên tục, đồng thời hỗ trợ xử lý lỗi và pipeline mạnh mẽ.
Cmdlet này hoạt động dựa trên Service Control Manager (SCM) của Windows, do đó yêu cầu quyền Administrator để thực thi. Từ PowerShell 3.0 trở lên, Restart-Service được tích hợp sẵn, không cần cài thêm module nào.
Cú Pháp Cơ Bản Và Tham Số Quan Trọng

Cú pháp tổng quát của lệnh restart-service powershell như sau:
Restart-Service [-Name] <String[]> [-Force] [-PassThru] [-Include <String[]>] [-Exclude <String[]>] [-WhatIf] [-Confirm] [<CommonParameters>]
Các tham số chính bạn cần nắm
- -Name: Tên dịch vụ (cần chính xác, không phân biệt hoa thường). Có thể nhập nhiều tên cách nhau bằng dấu phẩy.
- -DisplayName: Tên hiển thị của dịch vụ. Dùng khi bạn không nhớ tên dịch vụ.
- -Force: Buộc dừng dịch vụ ngay cả khi có dịch vụ phụ thuộc. Cẩn thận vì có thể làm gián đoạn ứng dụng.
- -PassThru: Trả về đối tượng ServiceController sau khi restart, hữu ích để kiểm tra trạng thái.
- -WhatIf: Mô phỏng lệnh, không thực hiện thật. Dùng để kiểm tra trước khi chạy.
- -Confirm: Yêu cầu xác nhận trước khi thực thi.
- Tự động hóa: Viết script restart dịch vụ theo lịch, không cần can thiệp thủ công.
- Kiểm soát lỗi: Kết hợp với try/catch để xử lý khi dịch vụ không tồn tại hoặc từ chối restart.
- Tiết kiệm thời gian: Restart nhiều dịch vụ đồng thời, đặc biệt hữu ích khi cập nhật phần mềm hoặc cấu hình.
- Logging: Ghi lại trạng thái restart vào file log để audit.
- Tương thích: Hoạt động trên mọi phiên bản Windows Server từ 2008 R2 trở lên.
- Yêu cầu quyền Admin: Nếu chạy PowerShell không phải Administrator, lệnh sẽ báo lỗi Access Denied.
- Không restart dịch vụ có trạng thái “Stopped”: Về bản chất, Restart-Service = Stop + Start, nhưng nếu dịch vụ đã dừng, nó chỉ chạy Start. Đôi khi gây nhầm lẫn nếu bạn muốn cứng nhắc phải stop trước.
- Không hỗ trợ -ComputerName trong PowerShell Core: Nếu dùng PowerShell 7 trở lên, bạn phải dùng Invoke-Command kết hợp Restart-Service từ xa.
- Có thể làm gián đoạn ứng dụng: Khi dùng -Force, dịch vụ phụ thuộc bị dừng đột ngột, có thể gây mất dữ liệu.
| Tham số | Mô tả | Ví dụ |
|---|---|---|
| -Name | Dùng tên dịch vụ (ServiceName) | Restart-Service -Name Spooler |
| -DisplayName | Dùng tên hiển thị (có dấu cách) | Restart-Service -DisplayName “Windows Update” |
| -Force | Dừng dịch vụ và các dịch vụ phụ thuộc | Restart-Service -Name W3SVC -Force |
| -PassThru | Xuất trạng thái mới | Restart-Service Spooler -PassThru |
Cách Sử Dụng Lệnh Restart-Service PowerShell Trong Thực Tế

Ví dụ 1: Khởi động lại một dịch vụ đơn giản
Để restart dịch vụ Print Spooler, bạn chỉ cần gõ:
Restart-Service -Name Spooler
PowerShell sẽ tự động dừng dịch vụ (nếu đang chạy) và khởi động lại. Nếu dịch vụ đã dừng, lệnh sẽ khởi động nó luôn.
Ví dụ 2: Restart nhiều dịch vụ cùng lúc
Dùng tham số -ComputerName (chỉ khả dụng trong Windows PowerShell 5.1, không có trong PowerShell Core):
Restart-Service -Name Spooler -ComputerName SERVER01
Để lệnh hoạt động, bạn cần có quyền quản trị trên máy đó và PowerShell Remoting được kích hoạt. Với PowerShell 7, bạn nên dùng Invoke-Command để đảm bảo tương thích.
Lợi Ích Khi Sử Dụng Lệnh Restart-Service PowerShell
Hạn Chế Cần Biết

So Sánh Restart-Service Với Các Phương Pháp Khác
| Phương thức | Ưu điểm | Nhược điểm |
|---|---|---|
| Restart-Service (PowerShell) | Mạnh mẽ, pipeline, xử lý lỗi, tự động hóa | Cần quyền admin, phụ thuộc phiên bản PS |
| net stop + net start (CMD) | Đơn giản, không cần PS | Không kết hợp được, dễ sai tên, không pipeline |
| GUI Services.msc | Trực quan | Chậm, không tự động hóa, dễ nhầm lẫn |
| SC config (SC.exe) | Chi tiết, kiểm soát sâu | Cú pháp phức tạp, ít dùng |
Rõ ràng, lệnh restart-service powershell chiếm ưu thế về tính linh hoạt và khả năng scripting, đặc biệt trong môi trường DevOps và quản trị server.
Ứng Dụng Thực Tế Của Restart-Service

1. Khởi động lại dịch vụ Web IIS sau khi thay đổi cấu hình
Khi bạn deploy ứng dụng web, cần restart IIS để áp dụng thay đổi:
Restart-Service -Name W3SVC -Force
Tham số -Force đảm bảo tất cả worker process bị dừng và khởi động lại sạch sẽ.
2. Restart dịch vụ SQL Server sau khi cài đặt bản vá
Các bản vá SQL Server thường yêu cầu restart service. Script tự động kiểm tra trạng thái và restart:
Get-Service -Name "MSSQLSERVER" | Restart-Service -PassThru | Format-Table Name, Status
3. Script bảo trì hàng đêm
Bạn không thể. Lệnh Restart-Service yêu cầu quyền Administrator vì nó can thiệp vào Service Control Manager. Nếu muốn chạy script mà không cần admin, bạn cần cấu hình RunAs hoặc dùng scheduled task với quyền admin.
Restart-Service có log lại không?
Mặc định không có log riêng. Nhưng
Dùng tham số -DisplayName và đặt tên trong dấu ngoặc kép. Ví dụ: Restart-Service -DisplayName "Windows Time".
Có thể restart service trên máy tính không phải domain không?
Có, nhưng cần cấu hình WinRM và thêm máy đó vào TrustedHosts. Sau đó dùng Invoke-Command -ComputerName "IP" -Credential (Get-Credential) { Restart-Service -Name Spooler }.
Restart-Service khác gì với Stop-Service rồi Start-Service?
Về cơ bản là giống nhau. Tuy nhiên Restart-Service đảm bảo thứ tự: nếu dịch vụ đang dừng, nó chỉ Start; nếu đang chạy, nó Stop rồi Start. Việc dùng hai lệnh riêng có thể bị lỗi giữa chừng nếu script bị gián đoạn.
Tại sao lệnh báo lỗi “Service ‘xxx’ cannot be stopped due to an error”?
Nguyên nhân thường là dịch vụ không phản hồi, hoặc bị khóa bởi process khác. Thử dùng Stop-Service -Force -Name xxx trước, sau đó Start-Service -Name xxx. Hoặc kiểm tra event log để biết chi tiết.
Kết Luận
Lệnh restart-service powershell là công cụ không thể thiếu đối với quản trị viên Windows, từ người mới bắt đầu đến chuyên gia. Nắm vững cú pháp, tham số và các tình huống thực tế sẽ giúp bạn tự động hóa quy trình bảo trì, nâng cao hiệu suất làm việc và giảm thiểu rủi ro. Hãy áp dụng ngay vào môi trường của bạn, bắt đầu với các ví dụ đơn giản rồi tiến tới scripting phức tạp hơn. Với sức mạnh của PowerShell, việc quản lý dịch vụ chưa bao giờ dễ dàng đến thế.







