如何通过PowerShell批量修改计划任务的运行安全设置?
用PowerShell批量修改计划任务的登录运行设置
核心方案:借助ScheduledTasks模块(Windows 8/Server 2012+)
Windows 8及以上系统自带的ScheduledTasks模块,可直接通过PowerShell修改计划任务的登录触发逻辑,是最稳定的自动化方式。
单台机器修改步骤
- 确保模块加载(通常自动加载,手动执行可避免异常):
Import-Module ScheduledTasks
- 获取目标计划任务对象:
$task = Get-ScheduledTask -TaskName "你的任务名称" -TaskPath "\目标任务路径\"
- 调整登录设置并保存:
# 将登录类型改为「仅用户登录时运行」(对应Interactive枚举值) $task.Principal.LogonType = [Microsoft.PowerShell.Cmdletization.GeneratedTypes.ScheduledTask.LogonType]::Interactive # 生效修改 Set-ScheduledTask -InputObject $task
跨机器批量修改脚本
需确保目标机器开启WinRM,且执行账号拥有管理员权限:
# 定义要操作的机器列表 $targetComputers = @("PC-001", "PC-002", "Server-01") # 定义目标任务的名称和路径 $taskName = "待修改任务名" $taskPath = "\任务所属路径\" # 远程执行修改逻辑 Invoke-Command -ComputerName $targetComputers -ScriptBlock { param($taskName, $taskPath) Import-Module ScheduledTasks $task = Get-ScheduledTask -TaskName $taskName -TaskPath $taskPath -ErrorAction SilentlyContinue if ($task) { $task.Principal.LogonType = [Microsoft.PowerShell.Cmdletization.GeneratedTypes.ScheduledTask.LogonType]::Interactive Set-ScheduledTask -InputObject $task Write-Host "$env:COMPUTERNAME 上的任务修改完成" } else { Write-Warning "$env:COMPUTERNAME 未找到目标任务" } } -ArgumentList $taskName, $taskPath
兼容Windows 7/Server 2008 R2的方案
若目标系统不支持ScheduledTasks模块,可改用schtasks命令:
# 单台修改示例 schtasks /change /tn "\任务路径\任务名称" /RU "原任务运行用户" /IT # /IT 参数指定「仅用户登录时运行」,/RU需与原任务的运行用户保持一致
批量修改时,同样可通过Invoke-Command远程执行上述命令。
内容的提问来源于stack exchange,提问作者Shrikethorn
相关产品推荐
相关产品推荐

