我想使用任务计划程序自动运行我的 AutoHotkey 工具包,因为“启动”文件夹在启动时也会弹出 CMD 屏幕,而此方法不会。但是,我无法让以下内容正常工作。启动时什么也没有发生。然后我发现快速启动可能是一个问题(启用此功能时,Windows 实际上会休眠内核,因此冷启动不会触发此问题),因此我调整了从休眠恢复时运行的参数。到目前为止,没有任何效果,我不知道问题出在哪里;我希望对任务计划程序有更多了解的人可能有办法解决这个问题。
# Check if running as administrator
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
if (!$isAdmin) {
Write-Host "You need to run PowerShell as an administrator to run this script."
return
}
# Import the required module
Import-Module ScheduledTasks
# Specify the script to run at startup
$action = New-ScheduledTaskAction -Execute 'C:\Program Files\AutoHotkey\AutoHotkey.exe' -Argument 'C:\Users\roysu\OneDrive\0_Scripts_AutoHotKey\Basics-AHK\Basics.ahk'
$trigger = New-ScheduledTaskTrigger -AtStartup # AtStartup defines when it will happen
$settings = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -DontStopOnIdleEnd -StartWhenAvailable # Allow the task to be run on demand
$principal = New-ScheduledTaskPrincipal -UserId "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount # Required for Fast Start situations
# Register the scheduled task
Register-ScheduledTask -TaskName "Run Basics.ahk at Startup" -Action $action -Trigger $trigger -Settings $settings -Description "Run a script at startup" -Principal $principal
您的任务,鉴于它启动 AutoHotkey 脚本,需要在登录会话的上下文中运行(以在您的窗口站/桌面上执行操作):
确保您的任务在(您的)用户登录(
-AtLogon
,而不是在机器启动(-AtStartup
)时运行:
New-ScheduledTaskTrigger -AtLogon
以您自己的用户身份交互运行:
New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive
或者,要为所有用户运行任务:
$user = New-ScheduledTaskPrincipal -GroupId Users
原则上,这会在登录时运行任务visible,但是启动
.ahk
脚本本身并不会创建可见窗口(它只会向通知区域添加一个图标),所以这不应该是一个问题。
wscript.exe
启动的助手 VBScript,如这个答案所示。
#Requires -RunAsAdministrator
您可以使用“help about_Requires”阅读更多相关信息,它工作得非常好,并且可以节省您自己编写所有代码的时间。计划任务 CMDLET 的所有内容看起来都是正确的,并且完美遵循
示例。我唯一无法复制的是 autohotkey 实用程序。我知道它是什么,但我不使用它,也没有安装它。
是任务没有创建的问题,还是在Windows任务计划程序中但没有触发的问题?您可能需要确保目标计算机安装了自动热键。您可以使用测试路径 CMDLET 来确保它首先存在。但我需要更多详细信息,因为在我看来一切都是正确的,应该为您添加任务。