Windows使用shutdown命令实现局域网远程关机

2018/07/25 shutdown

因工作需要,局域网内两台 windows 主机需要每天手动关机。因两台主机公用一个显示器,每次都需要手动切换显示器视频线,并分别登陆系统关机,为了尽可能减少重复操作,故需要在一台主机内通过 shutdown 命令直接远程关闭另一台电脑。

环境说明

  • 控制机:win7 x86_64 专业版
    • IP:192.168.100.10
  • 被控制机:win7 x86_64 专业版
    • IP:192.168.100.20
  • 控制机、被控制机需要在同一网络并且能正常 ping 通

一、Windows shutdown 命令简介

1. 用法:

shutdown [/i | /l | /s | /r | /g | /a | /p | /h | /e | /o] [/hybrid] [/soft] [/f] [/m \ \computer][/t xxx][/d [p|u:]xx:yy [/c "comment"]]

参数 说明
没有参数 显示帮助。这与键入 /? 是一样的。
/? 显示帮助。这与不键入任何选项是一样的。
/i 显示图形用户界面(GUI)。这必须是第一个选项。
/l 注销。这不能与 /m 或 /d 选项一起使用。
/s 关闭计算机。
/r 完全关闭并重新启动计算机。
/g 完全关闭并重新启动计算机。在重新启动系统后,重新启动任何注册的应用程序。
/a 中止系统关闭。这只能在超时期间使用。
/p 关闭本地计算机,没有超时或警告。可以与 /d 和 /f 选项一起使用。
/h 休眠本地计算机。可以与 /f 选项一起使用。
/hybrid 执行计算机关闭并进行准备以快速启动。必须与 /s 选项一起使用。
/e 记录计算机意外关闭的原因。
/o 转到高级启动选项菜单并重新启动计算机。必须与 /r 选项一起使用。
/m \\computer 指定目标计算机。
/t xxx 将关闭前的超时时间设置为 xxx 秒。
有效范围是 0-315360000 (10 年),默认值为 30。
如果超时时间大于 0,则默示为/f 参数。
/c “comment” 有关重新启动或关闭的原因的注释。最多允许 512 个字符。
/f 强制关闭正在运行的应用程序而不事先警告用户。如果为 /t 参数指定大于 0 的值,则默示为 /f 参数。
/d [p \|u:]xx:yy 提供重新启动或关闭的原因。
p 指示重新启动或关闭是计划内的。
u 指示原因是用户定义的。
如果未指定 p 也未指定 u,则重新启动或关闭是计划外的。
xx 是主要原因编号(小于 256 的正整数)。
yy 是次要原因编号(小于 65536 的正整数)。

2. 例子

1)30秒后自动关机1

shutdown -s

这个会弹出自动关机对话框,默认30秒后关机

2)1小时后自动关机

shutdown -s -t 3600

3)晚上10点钟自动关机

at 22:00 shutdown -s

这个会显示类似“新加了一项作业,其作业 ID = 1”的信息,并添加一条关机任务。

4)远程pc重启

shutdown -m \[ip地址或计算机名] -r

  • 如果远程pc没开机或网络连接不到,会提示“找不到网络路径。”;
  • 如果远程pc已经被锁定,会提示“计算机已经锁定而且不使用强制选项无法关机。”,添加-f选项即可;
  • 如果命令运行成功,远程 pc 会显示自动关机对话框,默认有30秒的等待;
  • 如果后悔了,可以运行“>shutdown -m \[ip 地址或计算机名] -a”取消;
  • 如果没有远程关闭的权限,会提示“拒绝访问。”,需要参考下面的说明开放远程关机权限。

二、具体实现过程

1. 被控制机上操作(windows)

1)开启系统 guest 用户登陆

桌面=》我到电脑 =》右键管理 =》本地用户和组 =》用户 =》双击 guest用户 =》账户已禁用(勾去掉)

2)组策略远程关机权限的获取

  • win + R 打开运行,输入: gpedit.msc

  • 计算机配置 =》Windows 设置 =》安全设置 =》本地策略 =》用户权限分配,修改以下几项:

    • 从远程系统强制关机: 手动添加 guest 用户
    • 拒绝从网络访问此计算机:从列表中将 guest 用户删除
    • 从网络访问此计算机:手动添加 guest 用户 (非必须,仅当前面两项设置后,远程关机命令依然提示:拒绝访问后开启!)

3)测试被控机 shutdown 关机命令是否正常

win+R,输入 cmd,打开命令提示符窗口,直接在本地输入关机命令:

shutdown /s -t 60

如果出现 60s 关机提示框,说明 shutdown 命令正常,继续本地输入撤消关机命令:

shutdown /a

2. 主控机上操作

记事本编写 远程关闭被控机.bat、撤销关机.bat 关机脚本,

脚本名称可自行命名,但需要注意不要与脚本中命令相同(如:shutdown.bat),否则脚本会出现死循环,并不会执行!

远程关闭被控机.bat 脚本内容:

:: 远程关闭被控机脚本
@echo off

::被控制机1: 192.168.100.20
::控制机: 192.168.100.10

set IPs=192.168.100.20,192.168.100.10

for %%a in (%IPs%) do (
  ping %%a -n 2 | find /i "TTL" >nul && (
    shutdown /m %%a /s /t 0
  )
)

exit

不加 -t 参数默认1分钟, -t 0 表示立即关机

撤销关机.bat 脚本内容:

:: 远程撤销关机脚本
@echo off

shutdow /m \\192.168.100.20  /a

参考链接:https://www.cnblogs.com/shenjieblog/p/5455691.html

Search

    Table of Contents