使用任务调度器实现 PowerShell 脚本的自动化

Marion Paul Kenneth Mendoza 2023年1月30日
  1. 使用任务计划程序运行 PowerShell 脚本
  2. 在 PowerShell 中创建计划任务
使用任务调度器实现 PowerShell 脚本的自动化

Windows 任务计划程序可以帮助我们在特定时间或满足特定条件和触发器时自动启动程序或 PowerShell 脚本。

本文将向我们展示如何从任务计划程序运行 PowerShell 脚本并使用 Windows PowerShell 创建计划任务。

使用任务计划程序运行 PowerShell 脚本

Windows+R 打开任务计划程序控制台,然后在打开的窗口中键入 taskschd.msc。执行后,请按照以下步骤操作。

首先,单击创建任务并输入新任务的名称和描述。接下来,选中以最高权限运行框以使用管理员权限运行程序。

运行任务时,最好分配一个单独的服务帐户来执行任务,无论用户当前是否处于会话中。

创建任务

其次,单击触发器选项卡,然后单击新建... 按钮。这里我们可以指定触发任务执行的条件。

有多种方法可以开始一项任务。

  • 按计划
  • 登录时
  • 启动时
  • 空闲时
  • 在一个事件上
  • 在任务创建/修改
  • 在连接到用户会话时
  • 与用户会话断开连接
  • 在工作站锁定
  • 在工作站解锁

选择适合情况的触发器。

任务触发器

第三,单击 Actions 选项卡,然后单击 New…。在这里,我们可以指定在满足触发条件时将执行的操作。

必须完全遵循此步骤才能正确运行 PowerShell。要自动安排系统将执行的 PowerShell 脚本,请填写以下字段:

  • 行动:启动程序
  • 程序\脚本:powershell(或 powershell.exe
  • 添加参数(可选):-File(在此处指定文件的路径)(此处也放置任何其他参数)

单击确定以应用更改。

任务操作

第四,Conditions 选项卡使我们能够指定与触发器一起确定系统应如何运行任务的条件。

任务条件

第五,我们还可以在设置选项卡上为你的计划任务设置附加参数。

任务设置

六、配置任务时,系统会询问我们第一步提供的账号密码。输入密码并点击 OK 保存任务。

完成后,如果系统已通过设置触发器启动该任务,则该任务应成功运行 PowerShell 文件。

在 PowerShell 中创建计划任务

现在我们已经讨论了使用任务计划程序设置任务,让我们讨论如何使用 PowerShell 创建计划任务。

PowerShell 3.0 和 4.0 引入了用于创建计划任务的 cmdlet,例如 New-ScheduledTaskTriggerRegister-ScheduledTask

# Specify the trigger settings
$Trigger= New-ScheduledTaskTrigger -At 10:00am -Daily

# Specify the account to run the script
$User= "NT AUTHORITY\SYSTEM" 

# Specify program to run (PowerShell)
$Action= New-ScheduledTaskAction -Execute "PowerShell" -Argument "-file C:\PS\PSScript.ps1" 

# Specify the name of the task
Register-ScheduledTask -TaskName "Test Script" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force 

其他可能对设置新任务有用的触发选项包括:

  • -AtStartup 在 Windows 启动时触发我们的任务。
  • -AtLogon 在用户登录时触发我们的任务。
  • -Once 触发我们的任务一次。我们可以使用 -RepetitionInterval 参数设置重复间隔。
  • -Weekly 每周触发一次我们的任务。

请注意,在使用这些 cmdlet 时,不可能像我们使用任务计划程序工具那样触发事件执行。

带有 on an event 触发器的 PowerShell 脚本要复杂得多,因此这是使用 PowerShell 而不是 Task Scheduler 的缺点。

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

相关文章 - PowerShell Task Scheduler