创建 Windows PowerShell 脚本并将其作为计划任务运行

已完成

计划作业是 Windows PowerShell 后台作业和 Windows“任务计划程序”任务的组合。 与后台作业类似,可以在 Windows PowerShell 中定义计划作业。 此外,作业结果会与任务一样被保存到磁盘。即使 Windows PowerShell 未运行,计划作业也可以运行。

计划任务

计划任务是 Windows 核心基础结构组件的一部分。 在 Windows 上运行的其他 Windows 组件和产品广泛使用计划任务。 它们通常比计划作业更简单。 “任务计划程序”支持配置计划,用于在任何安全性上下文中运行几乎任何程序或进程,这些程序或进程由各种系统事件或特定日期或时间触发

但计划任务无法捕获和操作任务输出。 计划任务几乎可以在 Windows 设备上运行任何可运行的内容,因此无法预测和捕获计划任务的输出。 但由于 Windows PowerShell 计划作业始终是 Windows PowerShell 脚本,即使此脚本运行非 Windows PowerShell 程序,系统也能够捕获输出。 在这种情况下,将在脚本块末尾返回 Windows PowerShell 对象。 计划任务包括:

  • 操作:指定要运行的程序
  • 主体:确定用于运行操作的上下文
  • 触发器:定义确定程序何时运行的时间或系统事件
  • 其他设置:进一步配置任务并控制操作的运行方式

适用于计划任务的命令位于 Windows 10 和 Windows Server 2019 随附的 ScheduledTasks 模块中。 若要查看完整的命令列表,请运行以下命令:

Get-Command –Module ScheduledTasks

例如,通过运行 Get-ScheduledTask 命令检查可用的计划任务。 这将列出所有可用的计划任务,无论它们是启用还是禁用。

通过运行带有 -TaskPath 参数的 Get-ScheduledTask 来获取有关特定任务的信息。 若要获取最佳做法,请确保将实际路径放在引号中。 使用 Get-ScheduledTaskInfo 命令获取有关特定任务的详细信息。 然后,可以使用管道合并这些命令以获取其他信息。 例如,通过输入以下命令检索有关在系统上运行的“自动更新”任务的详细信息

Get-ScheduledTask -TaskPath "\Microsoft\Windows\WindowsUpdate\" | Get-ScheduledTaskInfo

还可以在“任务计划程序”中创建和运行计划任务。 但如果运行的是 Windows PowerShell 命令或脚本,或者不将其输出写入文件的 Windows 工具,该如何操作? 如果输出对你很重要,建议使用 Windows PowerShell 计划作业。 在此作业进入“任务计划程序”后,你可以进一步操作它。 可以在“任务计划程序”中启动或停止该作业。 如果要在本地甚至远程计算机上创建多个计划作业或任务,请使用计划作业或计划任务命令自动创建和维护它们。

在“任务计划程序”中添加 Windows PowerShell 脚本作为计划作业可以大幅度提高工作效率。 PowerShell 库包含数千个脚本,你可以根据自己的特定用途使用或修改这些脚本,这些脚本分为不同的类别。

例如,可以针对 Active Directory 域服务 (AD DS) 和其他 Active Directory 服务运行数百个可行脚本。 其中某些脚本可能非常有用。 例如,使用脚本查找超过 90 天未使用的用户帐户,然后禁用它们,这有助于加强域安全性。 可以将此脚本修改为特定域,然后将其创建为计划作业。 配置此任务后,可以在“任务计划程序”中查找和操作作业。 安排它每周运行一次,并提供有关禁用了哪些帐户(如果有)的报告。