因工作需要,局域网内两台 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