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

[玩转系统] 如何使用任务计划程序安排 PowerShell 脚本

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

如何使用任务计划程序安排 PowerShell 脚本


PowerShell 脚本减少了手动执行重复性任务。如果您经常在预定义的时间或指定的时间间隔执行脚本,您可能会厌倦重复执行脚本。然后,您可以利用 Windows 的任务计划程序自动执行脚本。它将节省您每天/每周执行脚本的时间和精力。让我们看看如何通过任务调度程序来调度PowerShell脚本。

可以通过两种方式完成。

1.使用任务计划程序 GUI 计划 PowerShell 脚本

2.使用 PowerShell 从任务计划程序安排 PowerShell 脚本

方法 1:使用任务计划程序安排 PowerShell 脚本

打开任务计划程序(可以在“管理工具”中找到它,或者按“Windows+R”打开运行,然后输入“taskschd.msc”。)

要从任务计划程序运行脚本,请按照以下步骤操作。

1.打开任务计划程序 -> 任务计划程序库 -> 创建任务

[玩转系统] 如何使用任务计划程序安排 PowerShell 脚本

2.在常规选项卡中,您可以设置任务的调度程序名称和描述,例如任务创建的目的。

[玩转系统] 如何使用任务计划程序安排 PowerShell 脚本

可用的安全选项如下所述。

  • 指定将代表其运行任务的用户。
  • 您可以指定应运行的任务。可以通过选择标有“运行用户是否登录”的单选按钮来完成。如果选择此单选按钮,任务将不会以交互方式运行。要使任务以交互方式运行,请选择“仅在用户登录时运行”单选按钮。
  • 当选择“无论用户是否登录都运行”时,无论您是否选中“不存储密码”复选框,都可能会提示您提供帐户的凭据。强>'或不。如果任务执行期间帐户未登录,将使用保存的凭据。
  • 如果任务需要提升权限,请选择“以最高权限运行”选项。

3.切换到触发器选项卡并单击新建按钮。在这里,您可以设置触发任务的条件。

[玩转系统] 如何使用任务计划程序安排 PowerShell 脚本

  • 您可以指定何时开始任务。例如,您可以通过选择“开始任务”下拉菜单,按计划、在启动时、登录时或发生特定事件时执行它。

[玩转系统] 如何使用任务计划程序安排 PowerShell 脚本

  • 您可以根据您的场景配置是否要运行此任务一次、每天、每周或每月运行一次。
  • 在“高级设置”中,您可以选择延迟任务、重复任务、如果任务运行时间超过指定的时间段和到期日期则停止任务。

    • 延迟任务最多 - 这会增加随机延迟,因此任务不会在一天中的确切时间进行统计。
  • 重复任务间隔 - 显示触发器触发后任务应运行的次数。

    • 重复任务间隔 - 每次任务重复之间的时间间隔
  • 持续时间 - 任务应继续重复多长时间
  • 如果任务运行时间超过预期时间,则停止任务 - 如果任务运行时间超过预期时间或从未退出,则任务在达到提到的时间限制时将自动停止。
  • 过期 - 在指定的时间段之后,计划将不会被触发。
  • [玩转系统] 如何使用任务计划程序安排 PowerShell 脚本

    4.然后打开下一个选项卡“操作”并单击“新建”按钮。

    [玩转系统] 如何使用任务计划程序安排 PowerShell 脚本

    • 在操作下拉列表中,默认设置为“启动程序”。如果需要,您可以更改它。
    • 使用浏览,选择程序/脚本字段。要安排脚本,我们需要选择 powershell.exe。
      您可以在 system32\WindowsPowerShell\v1.0 文件夹中找到 powershell.exe。
    • 在“添加参数”中,-File 参数是默认参数,因此只需指定脚本路径即可。例如,我将安排一个导出 Office 365 用户 MFA 状态报告的脚本。
    c:\GetMFAStatus.ps1

    如果路径包含任何空格,则应将其用引号引起来。

    5.配置完成后,您可以指定条件来确定任务是否应运行。如果此处指定的任何条件不成立,则任务将不会运行。

    [玩转系统] 如何使用任务计划程序安排 PowerShell 脚本

    6.在“设置”选项卡上,您可以设置其他高级设置来控制任务执行。

    [玩转系统] 如何使用任务计划程序安排 PowerShell 脚本

    最后,单击确定创建计划脚本。

    计划的脚本将根据您的计划按预期运行,不会出现任何问题。如果您想检查脚本执行情况,可以通过右键单击任务名称来单击运行

    [玩转系统] 如何使用任务计划程序安排 PowerShell 脚本

    使用参数从任务计划程序自动化 PowerShell 脚本

    如果您想使用参数安排 PowerShell 脚本,请使用以下格式。

    Script path -Param 1 Value1 -Param2 “Value 2”

    例如,我将自动化我们的 PowerShell 脚本之一:导出 Office 365 用户 MFA 状态报告

    在计划期间,您可以将凭据作为参数显式传递,如下所示:

    C:\GetMFAStatus.ps1 -UserName "XXX XX" -Password ****

    如果参数值有空格,则值应该用引号引起来。

    注意:如果您想要以更安全的方式替代以纯文本形式传递密码,请考虑使用证书。管理员可以轻松创建用于内部目的的自签名证书,从而无需昂贵的第三方 CA 证书。

    如果您想传递开关参数,可以使用以下语法。

     C:\GetMFAStatus.ps1 -EnabledOnly

    上述脚本导出已启用 MFA 状态的 Office 365 用户 MFA 状态。这里-EnabledOnly是一个开关参数。

    有关更多 Office 365 相关 PowerShell 脚本,您可以参考 O365Reports.com 博客。

    方法 2:使用 PowerShell 从任务计划程序安排 PowerShell 脚本

    您可以使用 PowerShell cmdlet 来创建自动执行 PowerShell 脚本的计划任务,而不是 GUI。它涉及以下步骤,

    1.定义调度程序的时间

    2.设置执行时要执行的Actions

    3.保存调度程序

    为调度程序定义时间:

    New-SchdeuledTaskTrigger 创建计划任务触发器对象。使用此 cmdlet,您可以指定任务的开始时间或每天或每周多次启动任务。

     $Time=New-ScheduledTaskTrigger -At 4.00PM -Once

    上面的 cmd 创建了一个计划任务触发器,该触发器在下午 4 点启动并运行一次。

       $Time=New-ScheduledTaskTrigger -At 4.00PM -Daily -DaysInterval 2

    上面的 cmd 创建了一个计划任务触发器,每 2 天下午 4 点启动一次

    设置执行期间要执行的操作:

    New-SchdeuledTaskAction 表示任务计划程序运行任务时执行的操作。一个任务可以有单个操作或最多 32 个操作。当您指定多个操作时,任务计划程序会按顺序执行任务。

     $Action=New-ScheduledTaskAction -Execute PowerShell.exe -WorkingDirectory C:/Scripts -Argument “C:\Scripts\MFAStatus.ps1 -UserName XXXX -Password YYYY”

    此命令打开 PowerShell 并将目录更改为 C:/Scripts,然后调用 MFAStatus.ps1 脚本。

    保存调度程序:

    Register-ScheduledTask 将计划任务保存在本地计算机上。

     Register-ScheduledTask -TaskName "Schedule MFA Status Report" -Trigger $Time -Action $Action -RunLevel Highest

    上述命令在根文件夹中保存一个名为“Schedule MFA Status Report”的计划任务。保存的任务使用由 $Action 和 $Time 变量指定的预先创建的操作和触发器值。

    用例:

    使用任务计划程序,您可以安排 PowerShell 脚本定期运行。这样您就不需要每天/每周/每月手动运行脚本。互联网上有更多对调度程序友好的脚本(凭证可以作为参数传递,而不是保存在脚本内)。我在这里举了一些例子。

    • 跟踪 Office 365 用户的登录历史记录 - 保留审核日志超过 90 天
    • 定期报告 Office 365 用户 MFA 状态
    • 安排 Office 365 用户的上次登录时间报告
    • 安排 Office 365 邮箱权限报告
    • 安排 Office 365 用户许可证报告
    • 安排通讯组成员资格 PowerShell 脚本
    • 安排动态通讯组成员资格 PowerShell 脚本
    • 关于 Office 365 用户上次活动报告的定期报告
    • 安排 Office 365 用户的登录历史 PowerShell 报告
    • 定期导出共享邮箱权限报告
    • 安排非所有者邮箱访问报告
    • Office 365 用户的密码过期报告

    在这篇博客中,我们了解了如何使用任务计划程序自动化 PowerShell 脚本。在调度方面,您首选的方法是什么 - GUI 还是 PowerShell?请在评价部分留下您的意见。

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

    取消回复欢迎 发表评论:

    关灯