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

[玩转系统] 如何使用任务计划程序自动化 PowerShell 脚本

作者:精品下载站 日期:2024-12-14 06:09:26 浏览:13 分类:玩电脑

如何使用任务计划程序自动化 PowerShell 脚本


Microsoft Windows 任务计划程序可以帮助您在特定时间或满足特定条件时自动启动程序或 PowerShell 脚本。您还可以安排发送电子邮件,甚至显示某些消息。在本博客中,我们将向您展示如何从任务计划程序运行 PowerShell 脚本,该脚本将在本地计算机上安装任何软件时发出警报。

我们还将使用 PowerShell 脚本创建计划任务。你将学到如何:

  • 使用任务计划程序创建任务
  • 修改或删除计划任务
  • 使用 PowerShell 脚本创建计划任务。

使用任务计划程序创建任务

按“Windows+R”打开任务计划程序,然后在打开的窗口中键入“taskschd.msc”。然后执行以下步骤:

1. 单击“创建任务”并输入新任务的名称和描述。要以管理员权限运行程序,请选中“以最高权限运行”框。在我们的示例中,我们将分配一个服务帐户来运行该任务,并且无论用户是否登录都运行它。

[玩转系统] 如何使用任务计划程序自动化 PowerShell 脚本

2. 切换到“触发器”选项卡并单击“新建...”按钮。您可以在此处指定触发任务执行的条件。例如,您可以让它按计划、在登录时、在空闲时、在启动时或每当发生特定事件时执行。我们希望我们的任务由任何新软件安装触发,因此我们从下拉菜单中选择“On an event”,然后从“Log”设置中选择“Application”。将“Source”参数留空并将EventID 设置为“11707”。单击“确定”保存更改。

[玩转系统] 如何使用任务计划程序自动化 PowerShell 脚本

3. 导航至“操作”选项卡,然后单击“新建...”。您可以在此处指定满足触发条件时将执行的操作。例如,您可以发送电子邮件或显示消息。在我们的例子中,我们想要启动一个程序,因此我们需要创建要运行的 PowerShell 脚本,并使用“ps1”扩展名保存它。您可以在这里找到脚本;它将发送一条警报,其中包含有关已安装软件的事件详细信息。

要计划 PowerShell 脚本,请指定以下参数:

  • 操作:启动程序
  • 程序脚本: powershell
  • 添加参数(可选): -File [在此处指定脚本的文件路径]

单击“确定”保存更改。

[玩转系统] 如何使用任务计划程序自动化 PowerShell 脚本

4. 通过“条件”选项卡,您可以指定条件以及触发器,以确定是否应运行任务。在我们的例子中,我们应该保留此选项卡上的默认设置。

[玩转系统] 如何使用任务计划程序自动化 PowerShell 脚本

5. 您还可以在“设置”选项卡上为计划任务设置其他参数。但对于我们的示例,我们将保持它们不变。

[玩转系统] 如何使用任务计划程序自动化 PowerShell 脚本

6. 任务设置完成后,系统将要求您提供服务帐户密码。请注意,该帐户必须具有“作为批处理作业登录”权限。输入密码并单击“确定”保存任务。
7. 要使任务计划程序正常运行,必须将作业计划程序服务设置为启动运行“Services.msc”。在服务列表中,找到任务计划程序并双击它。在“常规”选项卡上,将启动类型设置为“自动”,然后单击“确定”保存更改。

现在,每当您的 Microsoft Windows Server 上安装新软件时,您都会收到一封电子邮件通知,其中详细说明了安装时间、软件名称以及安装者的用户 ID (SID)。

修改或删除计划任务

要修改现有任务,请在列表中右键单击该任务,选择“属性”,编辑所需的设置,然后单击“确定”。要删除计划任务,请右键单击它,选择删除并确认操作。

使用 PowerShell 脚本创建计划任务

现在您已经了解了如何使用任务计划程序创建任务,接下来让我们了解如何使用 PowerShell 创建计划任务。假设我们希望每天上午 10 点启动任务,并且它必须执行您可以在此处找到的 PowerShell 脚本,该脚本将监视 Active Directory 站点中组成员身份的更改。

在 Windows Powershell 2.0(Windows 7、Windows Server 2008 R2)中,要创建计划作业,必须使用 TaskScheduler 模块。通过运行“Import-Module TaskScheduler”命令安装模块,并使用以下脚本创建一个任务,该任务将在每天上午 10 点执行名为 GroupMembershipChanges.ps1 的 PowerShell 脚本:

Import-Module TaskScheduler $task = New-Task
$task.Settings.Hidden = $true
Add-TaskAction -Task $task -Path C:Windowssystem32WindowsPowerShellv1.0powershell.exe –Arguments “-File C:ScriptsGroupMembershipChanges.ps1”
Add-TaskTrigger -Task $task -Daily -At “10:00”
Register-ScheduledJob –Name ”Monitor Group Management” -Task $task

Windows PowerShell 4.0(Windows Server 2012 R2 及更高版本)不包含任务计划程序模块,因此此脚本将不起作用。相反,PowerShell 3.0 和 4.0 引入了用于创建计划任务的新 cmdlet、New-ScheduledTaskTriggerRegister-ScheduledTask,这使得创建计划任务变得更加容易和方便。因此,让我们创建一个任务,每天上午 10 点使用系统帐户 (SYSTEM) 执行我们的脚本。此任务将由具有提升权限的帐户执行。

$Trigger= New-ScheduledTaskTrigger -At 10:00am –Daily # Specify the trigger settings
$User= "NT AUTHORITYSYSTEM" # Specify the account to run the script
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:PSStartupScript.ps1" # Specify what program to run and with its parameters
Register-ScheduledTask -TaskName "MonitorGroupMembership" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest –Force # Specify the name of the task

[玩转系统] 如何使用任务计划程序自动化 PowerShell 脚本

其他可用于创建新任务的触发器选项包括:

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

请注意,使用这些 cmdlet,不可能像我们使用任务计划程序工具那样“在事件上”触发执行。具有“事件”触发器的 PowerShell 脚本要复杂得多,因此这是使用 PowerShell 而不是任务计划程序的真正缺点。

结论

如您所见,使用任务计划程序或 PowerShell 可以轻松创建计划任务。但请记住,对计划任务的不当更改可能会导致服务中断并降低服务器性能。因此,跟踪计划任务的所有更改至关重要。

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

取消回复欢迎 发表评论:

关灯