Shutdown.exe là công cụ dòng lệnh tích hợp sẵn trong Windows cho phép reboot, shutdown, đưa máy tính vào chế độ sleep, hibernate hoặc kết thúc phiên người dùng. Trong hướng dẫn này, chúng tôi sẽ chỉ các ví dụ cơ bản về việc sử dụng lệnh shutdown trong Windows. Tất cả các lệnh được thảo luận ở trên được chạy trong hộp thoại Run — Win+R →, trong command prompt (cmd.exe) hoặc trong PowerShell.
Lệnh shutdown có cú pháp sau:
shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/fw] [/f] [/m \\computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]]

Như bạn thấy, lệnh có khá nhiều tùy chọn, và có thể được dùng để tắt/khởi động lại máy tính cục bộ hoặc từ xa.
Cách Tắt Windows Bằng Command Prompt?
Để tắt máy tính Windows của bạn, sử dụng lệnh shutdown với khóa /s.
shutdown /s
Khởi Động Lại Windows Từ CMD
Để khởi động lại máy tính của bạn, sử dụng tham số /r. Sau khi chạy nó, Windows sẽ được khởi động lại một cách graceful.
shutdown /r

Kết Thúc Phiên Người Dùng
Để kết thúc phiên người dùng hiện tại (logoff), chạy lệnh này:
shutdown /l

Lệnh này hoạt động theo cùng cách như lệnh logoff.exe.
Cách Hibernate Windows?
Để hibernate máy tính của bạn, chạy lệnh này:
shutdown /h
Ở chế độ hibernate, toàn bộ nội dung bộ nhớ được ghi vào file hiberfil.sys trên ổ đĩa cục bộ và máy tính được đưa vào chế độ sleep do đó giảm tiêu thụ năng lượng.
Cách Thông Báo Cho Người Đã Đăng Nhập Trước Khi Reboot Hoặc Shutdown?
Bạn có thể thông báo cho tất cả người dùng Windows đã đăng nhập về việc tắt/khởi động lại sắp tới của máy tính hoặc máy chủ bằng cách gửi tin nhắn đến tất cả các phiên hoạt động. Như một quy tắc, tính năng này được dùng trên máy chủ RDS với một vài người dùng làm việc trên chúng cùng lúc trong các phiên RDP của riêng họ.
shutdown /r /c “This server will be restarted in 60 seconds.”
Tắt/Khởi Động Lại Trì Hoãn Của Máy Tính Sử Dụng Timer
Bạn có thể tắt hoặc khởi động lại máy tính với một độ trễ nhất định (hẹn giờ). Sử dụng tùy chọn /t, bạn có thể chỉ định khoảng thời gian sau đó máy tính/máy chủ sẽ bị tắt hoặc khởi động lại. Do đó, bạn có thể cung cấp cho người dùng một chút thời gian để lưu file mở và đóng ứng dụng đúng cách. Việc sử dụng tùy chọn này cùng với thông báo rất thuận tiện. Trong ví dụ này, chúng ta thông báo cho người dùng rằng Windows sẽ bị tắt trong 10 phút (600 giây).
shutdown /s /t 600 /c "The server will be shutdown in 10 minutes. Save your work!"
Người dùng sẽ thấy thông báo về việc tắt máy tính đã lên kế hoạch:
You’re about to be signed out

Nếu độ trễ quá dài, ví dụ 100 phút (6,000 giây), một cửa sổ popup xuất hiện ở góc dưới bên phải màn hình: You’re about to be signed out. Your Windows will shutdown in 100 minutes.

Hủy Tắt hoặc Khởi Động Lại Windows
Sau khi chạy lệnh tắt hoặc khởi động lại Windows, công cụ shutdown chờ 60 giây mặc định mà không làm gì. Quản trị viên có thể hủy khởi động lại hoặc tắt thiết bị bằng cách chạy lệnh này trong khoảng thời gian này:
shutdown /a
Sau khi bạn hủy tắt máy, bạn sẽ thấy cửa sổ popup sau ở góc dưới bên phải màn hình: Logoff is cancelled. The scheduled shutdown has been cancelled.
Buộc Khởi Động Lại Ngay Lập Tức Của Máy Tính
Để tắt hoặc khởi động lại máy tính ngay lập tức mà không chờ 60 giây, chỉ định 0 làm giá trị của tham số /t. Ví dụ: để khởi động lại máy tính ngay lập tức:
shutdown /r /t 0
Khóa /f rất quan trọng. Tôi dùng nó gần như luôn khi tắt hoặc khởi động lại máy chủ Windows. Thuộc tính này buộc đóng tất cả chương trình và tiến trình đang chạy mà không cần xác nhận từ người dùng (chúng ta không đợi cho đến khi người dùng xác nhận đóng tất cả ứng dụng trên máy chủ RDS vì chúng ta có thể không bao giờ nhận được nó).
Lệnh tiếp theo sẽ khởi động lại máy tính và tự động chạy tất cả ứng dụng đã đăng ký sau khi khởi động lại (ứng dụng được đăng ký trong hệ thống bằng API RegisterApplicationRestart được đề cập ở đây).
shutdown /g
Cách Tắt/Khởi Động Lại Từ Xa Máy Tính Windows?
Bạn có thể khởi động lại máy tính từ xa nếu bạn có quyền truy cập mạng đến nó, và tài khoản bạn dùng để chạy lệnh shutdown phải là thành viên của nhóm administrators cục bộ trên máy tính từ xa (máy chủ):
shutdown /r /t 120 /m \\192.168.1.210

Nếu tất cả điều kiện trên được đáp ứng, nhưng khi chạy lệnh shutdown lỗi “Access denied (5)” xuất hiện, hãy cho phép truy cập từ xa đến admin share (C$, ADMIN$) trên máy tính từ xa bằng cách thay đổi giá trị tham số LocalAccountTokenFilterPolicy thành 1.
reg add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v "LocalAccountTokenFilterPolicy" /t REG_DWORD /d 1 /f
Nếu bạn cần khởi động lại nhiều máy tính từ xa, bạn có thể lưu danh sách máy tính vào file văn bản và chạy khởi động lại từ xa tất cả máy tính bằng script PowerShell đơn giản:
$sh_msg = "Your computer will be automatically restarted in 10 minutes. Save your files and close running apps"
$sh_delay = 600 # seconds
$computers = gc C:\PS\PC-list.txt
foreach ($comp in $computers)
{
& 'C:\Windows\System32\SHUTDOWN.exe' "-m \\$comp -r -c $sh_msg -t $sh_delay"
}
Giao Diện Đồ Họa Của Lệnh Shutdown
Những ai không cảm thấy thoải mái làm việc trong command prompt có thể sử dụng giao diện đồ họa của lệnh shutdown.exe. Để gọi hộp thoại remote shutdown, sử dụng lệnh:
shutdown /i

Như bạn thấy, bạn có thể thêm nhiều máy tính trong hộp thoại remote shutdown để được reboot/shutdown, chỉ định văn bản thông báo và chỉ định lý do tắt máy để lưu trong nhật ký sự kiện Windows.
Cách Khởi Động Lại Máy Tính Sử Dụng Shortcut?
Để làm cho nó thuận tiện hơn cho người dùng, bạn có thể tạo shortcut để khởi động lại hoặc tắt máy tính với cài đặt bắt buộc trên desktop. Shortcut có thể hữu ích khi bạn cần khởi động lại máy tính từ phiên RDP khi không có tùy chọn restart hoặc shutdown trong menu Start.

Nếu bạn muốn máy tính hoặc máy chủ của bạn khởi động lại/tắt ở một thời điểm cụ thể, bạn có thể thêm lệnh shutdown với các tham số nhất định vào Windows Task Scheduler (taskschd.msc).
Ví dụ: tác vụ Scheduler này sẽ khởi động lại máy tính hàng ngày lúc 12 AM.

Hoặc bạn có thể tạo một Scheduled task mới với PowerShell:
$Trigger= New-ScheduledTaskTrigger -At 00:00am -Daily
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "shutdown.exe" -Argument "–f –r –t 120"
Register-ScheduledTask -TaskName "RebootEvertyNight_PS" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force