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

[玩转系统] 如何使用PowerShell创建和管理计划任务?

作者:精品下载站 日期:2024-12-15 00:44:42 浏览:14 分类:玩电脑

如何使用PowerShell创建和管理计划任务?


大多数用户和管理员使用

taskschd.msc

用于在 Windows 上创建和管理计划任务的图形界面控制台。然而,在各种脚本和自动化流程中,使用PowerShell功能创建计划任务要方便得多。在本文中,我们将展示如何使用 PowerShell 创建和管理 Windows Scheduler 任务。

通过 PowerShell 在 Windows 上管理计划任务

ScheduledTasks PowerShell 模块用于管理 Windows 10/Windows Server 2016 上的计划任务。您可以按如下方式列出模块中的 cmdlet:

Get-Command -Module ScheduledTasks
  • Disable-ScheduledTask
  • Enable-ScheduledTask
  • Export-ScheduledTask
  • Get-ClusteredScheduledTask
  • Get-ScheduledTask
  • Get-ScheduledTaskInfo
  • New-ScheduledTask
  • New-ScheduledTaskAction
  • New-ScheduledTaskPrincipal
  • New-ScheduledTaskSettingsSet
  • New-ScheduledTaskTrigger
  • Register-ClusteredScheduledTask
  • Register-ScheduledTask
  • Set-ClusteredScheduledTask
  • Set-ScheduledTask
  • Start-ScheduledTask
  • Stop-ScheduledTask
  • Unregister-ClusteredScheduledTask
  • Unregister-ScheduledTask

[玩转系统] 如何使用PowerShell创建和管理计划任务?

提示。以前,内置控制台工具

schtasks.exe

在 Windows 中用于创建和管理调度程序作业。

使用 Windows PowerShell 创建计划任务

在现代版本的 PowerShell 中(从 Windows Server 2012/Windows 8 上的 PowerShell 3.0 开始),您可以使用 New-ScheduledTaskTriggerRegister-ScheduledTask cmdlet 来创建计划任务。

假设,我们需要创建一个计划任务,该任务应在启动期间(或在特定时间)运行并执行某些 PowerShell 脚本或命令。让我们创建一个名为 StartupScript1 的计划任务。此任务应在每天上午 10:00 运行 PowerShell 脚本文件 C:\PS\StartupScript.ps1。该任务将在 SYSTEM 帐户下以提升的权限(复选框“以最高权限运行”)执行。

$Trigger= New-ScheduledTaskTrigger -At 10:00am -Daily
$User= "NT AUTHORITY\SYSTEM"
$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument "C:\PS\StartupScript1.ps1"
Register-ScheduledTask -TaskName "StartupScript1" -Trigger $Trigger -User $User -Action $Action -RunLevel Highest -Force

如果任务创建成功,则会显示状态“就绪”。

[玩转系统] 如何使用PowerShell创建和管理计划任务?

您的 PowerShell 脚本将按指定的计划运行。如果您的计算机上启用了阻止 PS1 脚本执行的 PowerShell 执行策略,则可以使用以下命令从计划任务运行 PowerShell 脚本:

-Bypass

范围。

创建新任务时使用此代码:

$Action= New-ScheduledTaskAction -Execute "PowerShell.exe" -Argument “-NoProfile -NoLogo -NonInteractive -ExecutionPolicy Bypass -File C:\PS\StartupScript.ps1"

提示。 如果您希望该任务在每次计算机启动期间运行,则第一个命令必须如下所示:

$Trigger= New-ScheduledTaskTrigger -AtStartup

如果您想在用户登录时运行任务:

$Trigger= New-ScheduledTaskTrigger -AtLogon

打开

taskschd.msc

控制台并确保任务计划程序库中有新的计划程序任务。

[玩转系统] 如何使用PowerShell创建和管理计划任务?

在 Powershell 2.0(Windows 7、Windows Server 2008 R2)中,要从 PowerShell 创建计划任务,您可以使用 Schedule.Service COM 接口(或更新 PowerShell 版本)。在此示例中,我们创建一个计划任务,该任务将在启动期间执行包含 PowerShell 脚本的特定文件。该任务是通过

NT AUTHORITY\SYSTEM

特权。

$TaskName = "NewPsTask"
$TaskDescription = "Running PowerShell script from Task Scheduler"
$TaskCommand = "c:\windows\system32\WindowsPowerShell\v1.0\powershell.exe"
$TaskScript = "C:\PS\StartupScript.ps1"
$TaskArg = "-WindowStyle Hidden -NonInteractive -Executionpolicy unrestricted -file $TaskScript"
$TaskStartTime = [datetime]::Now.AddMinutes(1)
$service = new-object -ComObject("Schedule.Service")
$service.Connect()
$rootFolder = $service.GetFolder("\")
$TaskDefinition = $service.NewTask(0)
$TaskDefinition.RegistrationInfo.Description = "$TaskDescription"
$TaskDefinition.Settings.Enabled = $true
$TaskDefinition.Settings.AllowDemandStart = $true
$triggers = $TaskDefinition.Triggers
#http://msdn.microsoft.com/en-us/library/windows/desktop/aa383915(v=vs.85).aspx
$trigger = $triggers.Create(8)

如何使用PowerShell查看和运行计划任务?

您可以使用以下命令列出 Windows 上所有活动的计划任务:

Get-ScheduledTask -TaskPath | ? state -ne Disabled

要获取有关特定任务的信息:

Get-ScheduledTask CheckServiceState| Get-ScheduledTaskInfo
LastRunTime : 4/7/2021 10:00:00 AM
LastTaskResult : 267011
NextRunTime : 4/8/2021 10:00:00 AM
NumberOfMissedRuns : 0
TaskName : CheckServiceState
TaskPath : \
PSComputerName :

[玩转系统] 如何使用PowerShell创建和管理计划任务?

您可以禁用此任务:

Get-ScheduledTask CheckServiceState | Disable-ScheduledTask

要启用任务:

Get-ScheduledTask CheckServiceState | Enable-ScheduledTask

要立即运行任务(无需等待计划),请运行:

Start-ScheduledTask CheckServiceState

[玩转系统] 如何使用PowerShell创建和管理计划任务?

要从任务计划程序库中完全删除任务:

Unregister-ScheduledTask -TaskName CheckServiceState

如果您需要更改启动任务的用户名以及兼容性模式等,请使用 Set-ScheduledTask cmdlet:

$task_user = New-ScheduledTaskPrincipal -UserId a-d\j.abrams' -RunLevel Highest
$task_settings = New-ScheduledTaskSettingsSet -Compatibility 'Win8'
Set-ScheduledTask -TaskName CheckServiceState_PS -Principal $task_user -Settings $task_settings

如果您收到错误“

Set-ScheduledTask: No mapping between account names and security IDs was done

” 检查您提供的用户名是否正确。

[玩转系统] 如何使用PowerShell创建和管理计划任务?

如何通过XML文件导出和导入计划任务?

PowerShell 允许您将任何计划任务的当前设置导出到文本 XML 文件中。因此您可以导出任何任务的参数并将任务部署到其他计算机。该任务可以从任务计划程序 GUI 和 PowerShell 控制台导出。

以下是将名为 StartupScript 的任务导出到文件 StartupScript.xml 的命令:

Export-ScheduledTask StartupScript | out-file c:\tmp\StartupScript.xml

[玩转系统] 如何使用PowerShell创建和管理计划任务?

Export-ScheduledTask cmdlet 在 PowerShell 2.0 中不可用,因此在 Windows 7/Windows Server 2008 R2 中,最好使用内置工具 schtasks 导出任务设置并将结果重定向到文本文件中:

schtasks /query /tn "NewPsTask" /xml >> "c:\tmp\NewPsTask.xml"

将计划任务设置导出到 XML 文件后,可以使用 GUI、SchTasks.exe 或 PowerShell 将其导入到任何网络计算机。

Register-ScheduledTask cmdlet 可以帮助您从 XML 文件导入任务设置并注册它:

Register-ScheduledTask -Xml (Get-Content “\mun-fs01\public\NewPsTask.xml” | out-string) -TaskName "NewPsTask"

在 PowerShell 2.0 (Windows 7/Server 2008 R2) 中,使用 schtasks 工具导入任务更加容易。第一个命令创建一个新任务。第二个将立即运行它(无需等待事件触发器激活它)。

schtasks /create /tn "NewPsTask" /xml "\Srv1\public\NewPsTask.xml" /ru corp\skrutapal /rp Pa$$w0rd
schtasks /Run /TN "NewPsTask"

请注意,此示例使用用于运行任务的帐户的凭据。如果未指定凭据,因为它们未存储在作业中,导入时将请求它们。

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

取消回复欢迎 发表评论:

关灯