自动开机、自动关机(带确认)WIN11、华硕主板
自动开机、自动关机(带确认)WIN11、华硕主板
最近在工位办公,有时候需要远程操控电脑,但是又不想让电脑一直开机,只好在网上搜索怎么通过设置来确保电脑可以自动开机并检测关机。
自动开机
首先是调节自动开机,这里需要通过BIOS来设置,这是知道如何进入BIOS高级设置为基础的,如果不清楚,可以通过电脑型号或主板型号搜索一下(不过每次开机的时候,大概能看见,有提示,比如Press F2 Enter BIOS类似的)
第一步
打开控制面板中的硬件与声音,
点击电源选项
选择左侧的“选择电源按钮的功能”
点击更改当前不可用的设置,把“启用快速启动”关掉!!!
注意!!!:一般默认是开启的,这里需要关掉
因为如果不关掉,电脑其实一直在静默的开启状态,是无法完成自启动开机的
第二步
接下来就可以进去BIOS高级设置中了,在BIOS中找到电源高级管理的RTC开启的设置
(其实这里还要自查你的BIOS的版本和高级设置中的版本是否相同,不过大部分应该都一样,我就跳过了)我用的是华硕主板,进入BIOS后点击右下角高级模式或者按F7进入,这里借用一下up的截图,在“高级”中
找到高级电源设置
如果有这个erp就设置为关闭,没有看不到就不用管了(我的也看不到)
把下边的RTC唤醒打开,这个就是自动开机的主要程序,唤醒日期 ,就是隔开多少天要进行一次唤醒,如果要每天都自动开机的话,“实时钟唤醒日期(天)”这里需要填写 0
如果你打算每天的九点开启,下边的时分秒就是 9 0 0
最后记得按F10进行保存后退出。这样就OK了
自动关机
上边有了开机,但可能有一天我不需要看,电脑打开了,我想让他来判断现在有没有人在用,如果没有的话,我就设置一个3min来检测,没有就关闭电脑,如果有我就开着。
这个地方需要用到任务计划程序,来一步一步完成
第一步
在一个你喜欢的地方创建一个文本文件,只要是可以编辑的就可以,我用的是桌面上建立了一个txt文本,叫什么无所谓,一会需要更改名字
把这段话复制进去
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
# 定义关机时间(180秒,即3分钟)
$shutdownTime = 180
# 启动关机任务
Start-Process shutdown -ArgumentList "/s", "/f", "/t", $shutdownTime -NoNewWindow
# 开始计时
$startTime = Get-Date
# 取消关机任务的函数
function CancelShutdown {
# 取消关机任务
Start-Process shutdown -ArgumentList "/a" -NoNewWindow -Wait
# 关闭弹窗
$form.Close()
$timer.Stop()
}
# 创建弹窗
$form = New-Object System.Windows.Forms.Form
$form.Text = "关机倒计时"
$form.Size = New-Object System.Drawing.Size(300, 150)
$form.StartPosition = "CenterScreen"
$form.TopMost = $true # 确保弹窗在最顶层
$label = New-Object System.Windows.Forms.Label
$label.Text = "系统将在 $shutdownTime 秒后关机。"
$label.AutoSize = $true
$label.Location = New-Object System.Drawing.Point(50, 30)
$form.Controls.Add($label)
# 添加“取消关机”按钮
$button = New-Object System.Windows.Forms.Button
$button.Text = "取消关机"
$button.Location = New-Object System.Drawing.Point(100, 70)
$button.Add_Click({
CancelShutdown
})
$form.Controls.Add($button)
# 创建一个后台线程,用于更新标签内容
$timer = New-Object System.Windows.Forms.Timer
$timer.Interval = 1000 # 每秒更新一次
$timer.Add_Tick({
# 更新弹窗中的剩余时间
$remainingTime = [math]::Round($shutdownTime - ((Get-Date) - $startTime).TotalSeconds)
$label.Text = "系统将在 $remainingTime 秒后关机。"
# 如果倒计时结束,自动关闭
if ($remainingTime -le 0) {
$form.Close()
$timer.Stop()
}
})
# 启动计时器
$timer.Start()
# 显示弹窗并进入消息循环
[System.Windows.Forms.Application]::Run($form)
就是做了一个简单的小框,三分钟之内如果点击取消关机就可以了,如果没有取消就关机。
注意!!!这里需要把你的txt文件另存为,原位置
这里一定要改成ANSI编码形式
覆盖原文件之后,把文件的名称改为
cancel_shutdown.ps1
应该会提示你,说后缀名改了可能有一些什么什么问题,这里确定就好,如果没有提示应该是你的扩展名没有打开,到我的电脑里可以在查看中打开
请记得你这个ps1文件的位置
第二步
右键我的电脑,找到管理选项
之后找到任务计划程序,从右侧创建基本任务
自己输入一个名字,叫什么无所谓
每天都进行
你看你想啥时候关机,这里的时间就设定在什么时候,比如下午六点关机,就是18:00:00,开始的那个日期不用管
操作就是启动程序,我们要启动我们自己的上边的程序
这里需要输入两个内容
程序或脚本输入:
powershell.exe
下方的添加参数后边写
-ExecutionPolicy Bypass -File "C:\Users\Administrator\OneDrive\Desktop\cancel_shutdown.ps1"
这个后边的“”里的内容,就是的上边ps1的位置,我是放在了桌面上,把这个更改为你自己ps1的位置就可以了
之后完成就可以
第三步
回到计算机管理界面,找到任务计划程序库中你刚刚创立的任务,双击打开
这里一定要勾选上最高权限,配置有的博主说用win10,不过我用这个默认的就没有问题
之后确定就可以了
第四步(可选)
如果你想去确认一下有没有问题,可以利用管理员powershell运行一下
运行命令
Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
输入y或者是a都可以,回车
之后把你的ps1的位置写过来回车就可以运行,
会出现两个框,点击取消关机之后,右下角会弹出取消关机的弹窗,说明没有问题了
ok,已经大功告成