由于某些特殊情况电脑受管控,会1分钟无操作自动锁屏并无法调整设置,这时候就通过定时按键防止锁屏

win7/10中创建一个文件wake.ps1,将如下代码复制进去,右键使用powershell运行即可

# 调用Wscript.Shell
#$shell = New-Object -com "Wscript.Shell"
$shell = New-Object -ComObject Wscript.Shell
# 按键(推荐使用不常用按键,对应键值可参考https://learn.microsoft.com/zh-cn/office/vba/language/reference/user-interface-help/sendkeys-statement)
$key = "{SCROLLLOCK}"  # SCROLLLOCK
#$key = "{NUMLOCK}"  # NUMLOCK
#$key = " "  # 空格
#$key = "^"  # CTRL
#$key = "{TAB}"  # TAB

# 循环执行
while($True){

    # 打印执行日志
    $time = Get-Date
    Write-Output "$time Run sendkeys : $key"
    # 执行按键
    $shell.sendkeys($key)
	# 间隔50秒
    Start-Sleep -seconds 50
}

原理是用powershell调用自带的Wscript.Shell脚本模拟键盘每50秒按一下SCROLLLOCK键,也可以换成其他按键

如出现安全提示手动按Y确认或用下面命令执行即可,空格貌似可以直接运行
powershell.exe -ExecutionPolicy bypass -file wake.ps1

绕过安全模式提示+后台执行(只能任务管理器结束powershell进程,有的杀毒软件会提示风险操作)
powershell.exe -ExecutionPolicy bypass -WindowStyle Hidden -file wake.ps1

Win11上则需要先开启ps1脚本执行权限
使用管理员打开powershell
查看目前权限
Get-ExecutionPolicy
开启允许脚本执行
Set-ExecutionPolicy RemoteSigned
输入Y或A即可,其他操作和win10一样

权限检查代码段:

#判断是否以管理员权限运行powershell
$currentPrincipal = New-Object Security.Principal.WindowsPrincipal(
                    [Security.Principal.WindowsIdentity]::GetCurrent()
                    )
$isAdmin = $currentPrincipal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if ($isAdmin) {
    Write-Host "PowerShell is running as admin."
} else {
    Write-Host "WARNING : PowerShell is not running as admin."
}

# 检查系统是否允许执行脚本
$policy = Get-ExecutionPolicy
Write-Output "policy is $policy"
if ($policy -ne "RemoteSigned"){
    Write-Host "PowerShell is running Undefined.Need use RemoteSigned"
}
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐