当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用任务计划程序按计划运行 PowerShell 脚本

作者:精品下载站 日期:2024-12-14 01:55:08 浏览:15 分类:玩电脑

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


在Windows中,内置的任务计划程序可用于根据计划或在发生特定事件时执行操作。本指南介绍如何使用 Windows 任务计划程序将 PowerShell 脚本配置为自动运行。 PS1 脚本应在后台运行,不显示弹出窗口,并且无论当前 PowerShell 脚本执行策略设置如何都运行。

在这个例子中,我想运行

C:\PS\Outlook_Email_to.ps1

每 10 分钟生成一次 PowerShell 脚本文件。

  1. 通过运行打开任务计划程序控制台

    taskschd.msc

    命令

  2. 展开任务计划程序库树。为了方便起见,请为自定义计划任务创建一个单独的文件夹。右键单击并选择创建任务

    [玩转系统] 使用任务计划程序按计划运行 PowerShell 脚本

  3. 常规选项卡中,指定任务名称以及运行该任务的用户。该任务可以自动运行: - 当特定用户登录时(

    Run only the task is logged in

    )- 或用户是否登录(

    Run whether user is logged on or not

    ).

    第二种模式最常用。在第二种情况下,您可以指定该任务应代表特定用户运行(用于存储用户密码的凭据管理器)。如果任务需要提升,请启用“以最高权限运行”选项。

    [玩转系统] 使用任务计划程序按计划运行 PowerShell 脚本

    为了避免使用存储的密码,您可以将任务配置为以具有最高权限的 NT AUTHORITY\SYSTEM 身份运行。为此,请输入

    SYSTEM

    用户字段中。

    [玩转系统] 使用任务计划程序按计划运行 PowerShell 脚本

    在 AD 环境中,计划任务可以代表 gMSA 托管服务帐户运行。

  4. 触发器选项卡中,指定计划程序任务启动的条件或时间。例如,要在用户登录时运行任务,请选择“登录时”触发器,并在“重复任务”中选择10 分钟的频率每个选项。

    [玩转系统] 使用任务计划程序按计划运行 PowerShell 脚本

  5. 如果任务代表 SYSTEM 或具有存储密码的用户运行,请选择在 Windows 启动时运行该任务(启动时)并定期重新启动它。

    [玩转系统] 使用任务计划程序按计划运行 PowerShell 脚本

  6. 或者使用按计划触发器设置任务开始的确切时间。可以为单个任务配置多个启动触发器。

    计划程序还可以在事件查看器中发生特定事件时运行任务(请参阅如何在另一个任务完成后运行计划任务)。

  7. 然后转到操作选项卡。指定发生任何触发事件时要采取的操作。在这种情况下我想运行 PowerShell 脚本。选择新建 -> 启动程序。配置以下操作设置:
    程序/脚本:

    powershell.exe

    添加参数(可选):

     -ExecutionPolicy Bypass -NonInteractive -WindowStyle Hidden -File "C:\PS\Outlook_Email_to.ps1"

    [玩转系统] 使用任务计划程序按计划运行 PowerShell 脚本

    powershell.exe -file C:\PS\ Outlook_Email_to.ps1 -NoExit
  8. 以下选项用于运行 PowerShell 脚本:

    -File

    - 脚本文件的完整路径 (PS1)

    -ExecutionPolicy

    — 设置当前会话的 PowerShell 脚本执行策略设置。如果指定了绕过,则当前策略设置将被忽略,并且无论如何都会执行脚本;

    -NonInteractive

    - 不向用户显示交互式提示

    -WindowStyle Hidden

    - 对用户隐藏 PowerShell 控制台窗口(脚本隐藏运行)。如果计划程序任务设置为在用户登录时运行,则在脚本运行时,PowerShell 提示窗口可能会出现并暂时消失。仅在控制台会话 0 中启动的脚本没有闪烁提示(无论用户登录如何)。

    -NoProfile

    — 如果脚本可以在没有用户配置文件的情况下运行,请添加此选项。它可以防止加载用户配置文件,从而加快脚本的执行速度;

  9. 您可以在设置选项卡中启用以下有用的选项:
    允许按需运行任务
    如果正在运行的任务不运行请求时结束,强制停止
    不要启动新实例

  10. 保存任务设置。检查新任务是否出现在任务计划程序管理单元中。单击一个任务并选择运行来测试它。

    [玩转系统] 使用任务计划程序按计划运行 PowerShell 脚本

    如果 PowerShell 脚本已成功运行,则“上次运行结果”中将显示一条消息:

    The operation completed sucessfully (0x0).

    要将所有操作记录到文本日志文件中,我们建议您向 PowerShell 脚本添加一个简单的日志记录功能。这允许随时查看有关执行的所有操作的详细信息。

  11. 使用历史记录选项卡查看以前任务运行的历史记录和结果。默认情况下,任务历史记录不会保存在任务计划程序中(单击“操作”窗格中的启用所有任务历史记录链接)。

    [玩转系统] 使用任务计划程序按计划运行 PowerShell 脚本

您还可以创建这样的计划程序任务以从命令提示符运行 PowerShell 脚本:

$TaskName="CheckOutlookMailbox"
$Trigger = New-ScheduledTaskTrigger -AtStartup
$Trigger.Repetition = (New-ScheduledTaskTrigger -once -at "12am" -RepetitionInterval (New-TimeSpan -Minutes 10) -RepetitionDuration (New-TimeSpan -Minutes 10)).repetition
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "-ExecutionPolicy Bypass -NonInteractive -WindowStyle Hidden -File C:\PS\Outlook_Email_to.ps1"
Register-ScheduledTask -TaskName $TaskName -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force

通过 Windows 任务计划程序运行 PowerShell 脚本时还需要考虑一些其他事项:

  • 要在 PowerShell Core 环境中运行脚本,请运行

    pwsh.exe

    而不是

    powershell.exe
  • 如果其他用户可以使用特权访问您运行 PowerShell 脚本的计算机,请确保您已更改 PS1 文件的 NTFS 访问权限,以便他们无法修改该文件。

  • 如果任务以非特权用户身份运行,则必须将其帐户添加到本地安全策略作为批处理作业登录 (gpedit.msc -> 计算机配置 -> Windows 设置 -> 安全设置 -> 本地策略 -> 用户权限分配)。创建这样一个任务:

    This task requires that the user account specified has Log on as batch job rights

    [玩转系统] 使用任务计划程序按计划运行 PowerShell 脚本

  • 在 AD 域中,您可以在用户登录或注销、或者计算机启动或关闭时使用 GPO 运行 PowerShell 脚本。此类脚本称为登录脚本

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯