每次系统从睡眠状态唤醒时都需要运行powershell脚本

时间:2012-04-28 08:49:51

标签: powershell sleep wakeup

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

Sleep-Wake事件或Login(用户登录)事件应该触发我的脚本。

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

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

4 个答案:

答案 0 :(得分:2)

您可以通过安排任务来运行脚本,触发事件" Power-Troubleshooter"来完成此任务。事件ID 1 。这是系统在从睡眠中恢复时记录的事件。当系统进入睡眠时," Kernel-Power"使用事件ID 42 调用事件(与此处的其他答案不同)。

希望有所帮助:)

答案 1 :(得分:1)

我明白了。我使用了任务调度程序,正如Richard在上面指出的那样。

我将触发器设置为.. 在一个事件 - >系统 - >内核功率 - > 42

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

$strComputerName = gc env:computername
$strVPN = 'c:\Program Files (x86)\Cisco Systems\VPN Client\vpnclient.exe'
$vpnArgs = '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 { & $strVPN $vpnArgs } }
else { Write-Host "No Internet Connectivity, so not attempting VPN connection" }

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

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

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

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

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