如何以管理员身份为域内所有用户创建动态触发的MSI运行计划任务
解决方案:创建适配所有域用户的计划任务
要实现以管理员身份创建计划任务,让程序自动以当前登录的域用户身份运行,需要调整触发器和任务主体配置,去掉静态用户指定,具体修改如下:
修改后的PowerShell脚本
$taskName = "My Task2" $taskDescription = "This task runs as the currently logged-on domain user with admin rights, triggered on logon" # 定义触发器:所有用户登录时触发 $trigger = New-ScheduledTaskTrigger -AtLogOn # 定义任务动作:替换为你的应用实际路径 $taskAction = New-ScheduledTaskAction -Execute "C:\Path\To\Your\InstalledApp.exe" # 定义任务主体:以当前登录用户身份运行,且使用最高管理员权限 $taskPrincipal = New-ScheduledTaskPrincipal -UserId "CURRENT_USER" -RunLevel Highest # 注册计划任务,-Force参数用于覆盖已存在的同名任务 Register-ScheduledTask -TaskName $taskName ` -Trigger $trigger ` -Action $taskAction ` -Principal $taskPrincipal ` -Description $taskDescription ` -Force
关键修改说明
- 触发器调整:移除原脚本中的
-User Sanket.Wagh参数,仅保留-AtLogOn,确保所有域用户登录该计算机时都会触发任务。 - 任务主体配置:通过
New-ScheduledTaskPrincipal设置运行身份,-UserId "CURRENT_USER"是系统内置标识符,会自动映射到当前登录的域用户;-RunLevel Highest确保任务以管理员权限运行,满足创建任务时的权限要求。 - 任务注册优化:添加
-Force参数可直接覆盖已存在的同名任务,避免重复创建时的报错。
核心cmdlet功能说明
New-ScheduledTaskTrigger:用于创建任务触发规则,无用户参数的-AtLogOn会对所有登录用户生效。New-ScheduledTaskPrincipal:配置任务的运行身份与权限等级,CURRENT_USER实现动态适配当前登录用户的需求。Register-ScheduledTask:整合触发器、动作、主体等配置,完成计划任务的系统注册。
内容的提问来源于stack exchange,提问作者Sanket Wagh
相关产品推荐
相关产品推荐

