如何更改 Windows 中的默认计划任务进程优先级

How to change default scheduled task process priority in Windows

我已经检查了一段时间了。我们有一个创建计划任务的脚本,似乎正如网上许多地方所描述的那样,这个进程及其后代收到的任务优先级是 7:BelowNormal

现在这会在我们的测试环境中引起许多我想避免的问题

这里的问题是我是否可以创建一个 GPO 来覆盖 Windows' 默认的计划任务优先级,以便所有新的计划任务将获得优先级 X(在我的情况下 X 是 'Normal')

我知道有一个选项可以在创建计划任务时设置优先级,但我想避免这种情况,这样每个新任务都会有一个正确的默认优先级,而不是低于正常的优先级

提前致谢

您可以通过添加设置选项来编辑现有任务

$currentTask = Get-ScheduledTask -TaskName $taskName 
$settings = New-ScheduledTaskSettingsSet
$settings.Priority = 4
Set-ScheduledTask -TaskName $taskName -Trigger $currentTask.Triggers -Action $currentTask.Actions -Settings $settings -User "user" -Password "pass"

不使用 powershell 的另一种方法:

  1. 从 GUI 导出任务:在任务计划程序中,right-click 任务和 select "Export…" 并将导出的任务保存在文件中

  2. 更改优先级
    2.1 在文本编辑器(如记事本)中打开文件。这是定义任务的 XML。每个操作都会有一个部分,其中包含 <Settings>,其中包含 <Priority> 元素。
    2.2 更改值。 “低于正常”的默认值为 7。您可以使用 6、5 或 4 来表示“正常”优先级。您通常不想超出“正常”范围。 6 可能适合你。
    2.3 保存文件(例如"c:\mytask.xml")

  3. 使用命令导入任务line/schtasks:
    schtasks /DELETE /tn "\TASKSCHEDULER-FOLDER-PATH\TASK-IMPORT-NAME"(您需要先删除现有任务,然后使用 schtasks 从命令行创建一个新任务)
    schtasks /create /xml "c:\mytask.xml" /tn "\TASKSCHEDULER-FOLDER-PATH\TASK-IMPORT-NAME"

我有 220 台机器来做那个,所以我就这样做了。由于所有机器都有相同的配置,我可以将相同的 XML 文件复制到所有机器并根据 XML 重新创建计划任务。 请参阅有关不同优先级的更多详细信息 here. This answer was based on this 文章。

很遗憾,您无法更改默认优先级。但您可以使用 Set-ScheduledTask 修改现有任务。

$task = Get-ScheduledTask -TaskName '...' // Your task's name
$settings = $task.Settings
$settings.Priority = 4
// For possible values see https://docs.microsoft.com/en-us/windows/win32/taskschd/tasksettings-priority#remarks
Set-ScheduledTask -TaskName $taskName -Settings $settings

与 Alex Portnoy 的回答不同,这会保留其他设置,例如 WakeToRun