每次系统从睡眠中唤醒时都需要运行一个 powershell 脚本

Posted

技术标签:

【中文标题】每次系统从睡眠中唤醒时都需要运行一个 powershell 脚本【英文标题】:Need to run a powershell script every time system wakes up from Sleep 【发布时间】:2012-05-08 20:58:15 【问题描述】:

我刚刚用 PowerShell 编写了一个脚本,每次我的系统从睡眠或休眠状态唤醒时,我都需要它运行。 我尝试了 gpedit.msc -> 用户配置 -> Windows 设置 -> 脚本 -> 登录,但是当我的系统从“睡眠”唤醒时这不起作用...可能是因为“睡眠”->“唤醒”是技术上不是新登录(作为用户我已经登录)。

睡眠唤醒事件或登录(用户登录)事件都应该触发我的脚本。

关于如何做到这一点的任何想法?

有关我的脚本功能的更多信息:它检查互联网/网络是否已连接。如果是,它将尝试使用所需参数运行 Cisco *** 连接命令行实用程序并将我登录到 ***。每次我从睡眠中唤醒系统并登录时,我都需要该死的 *** 来自动连接我。

【问题讨论】:

【参考方案1】:

任务计划程序似乎更合适。

如果“启动时”的任务触发器在这种情况下不起作用(我怀疑它不会起作用),则识别从睡眠唤醒时发布的事件日志条目并触发。

【讨论】:

【参考方案2】:

我想通了。我使用了上面 Richard 指出的任务计划程序。

我将触发器设置为.. 在事件上 -> 系统 -> 内核电源 -> 42

如果有人有兴趣...这里是脚本(我是 PowerShell 脚本的初学者,所以欢迎您的输入)

$strComputerName = gc env:computername
$str*** = 'c:\Program Files (x86)\Cisco Systems\*** Client\***client.exe'
$***Args = 'connect', 'ProfileName', 'user', 'XXXXXXXX', 'pwd', 'XXXXXXXXXX'
[int]$count = 6
Write-Host "Checking for Internet Connectivity"
While (!([Activator]::CreateInstance([Type]::GetTypeFromCLSID([Guid]'DCB00C01-570F-4A9B-8D69-199FDBA5723B')).IsConnectedToInternet))

    Write-Host "Sleeping for 10 seconds before checking for internet again"
    Start-Sleep -s 10
    $count--
    if ( $count -eq 0) 
    
        Write-Host "Breaking from loop"
        break
    

if ( $count -ne 0)  Invoke-Command -ScriptBlock  & $str*** $***Args  
else  Write-Host "No Internet Connectivity, so not attempting *** connection" 

【讨论】:

【参考方案3】:

您可以通过安排任务来运行脚本,触发事件 ID 为 1 的事件“Power-Troubleshooter”来完成此操作。这是系统从睡眠状态恢复时记录的事件。当系统进入睡眠时,会使用事件 ID 42 调用“Kernel-Power”事件(与此处的另一个答案所暗示的不同)。

希望有帮助:)

【讨论】:

【参考方案4】:

在 Windows 11 上,我们可以使用的事件 ID 是 566

我将触发器设置为.. On an Event -> System -> Kernel-Power -> 566

在我的例子中,我运行了一个脚本来打开笔记本电脑上的键盘背光。现在,在 Windows 从睡眠状态恢复(打开笔记本电脑的盖子)但在我登录之前,背光灯会打开。

您可能还想取消选中:条件 > 电源 >“仅当计算机使用交流电源时才启动任务”

【讨论】:

以上是关于每次系统从睡眠中唤醒时都需要运行一个 powershell 脚本的主要内容,如果未能解决你的问题,请参考以下文章

通过 GPIO 中断将 k70 从 VLPS 深度睡眠中唤醒

使用信号从睡眠中唤醒进程

CH579-PM(power manage)

Linux进程的睡眠和唤醒

iOS startMonitoringForRegion 在睡眠模式下不起作用(黑屏)

ubuntu 进程睡眠怎么唤醒