Set-ScheduledJob 
	更改计划作业。
语法
		ScriptBlock (默认值)
	 
	Set-ScheduledJob
    [-InputObject] <ScheduledJobDefinition>
    [-Name <String>]
    [-ScriptBlock <ScriptBlock>]
    [-Trigger <ScheduledJobTrigger[]>]
    [-InitializationScript <ScriptBlock>]
    [-RunAs32]
    [-Credential <PSCredential>]
    [-Authentication <AuthenticationMechanism>]
    [-ScheduledJobOption <ScheduledJobOptions>]
    [-MaxResultCount <Int32>]
    [-PassThru]
    [-ArgumentList <Object[]>]
    [-RunNow]
    [-RunEvery <TimeSpan>]
    [<CommonParameters>]
		FilePath
	 
	Set-ScheduledJob
    [-InputObject] <ScheduledJobDefinition>
    [-Name <String>]
    [-FilePath <String>]
    [-Trigger <ScheduledJobTrigger[]>]
    [-InitializationScript <ScriptBlock>]
    [-RunAs32]
    [-Credential <PSCredential>]
    [-Authentication <AuthenticationMechanism>]
    [-ScheduledJobOption <ScheduledJobOptions>]
    [-MaxResultCount <Int32>]
    [-PassThru]
    [-ArgumentList <Object[]>]
    [-RunNow]
    [-RunEvery <TimeSpan>]
    [<CommonParameters>]
Execution
Set-ScheduledJob
    [-InputObject] <ScheduledJobDefinition>
    [-ClearExecutionHistory]
    [-PassThru]
    [<CommonParameters>]
说明
Set-ScheduledJob cmdlet 更改计划作业的属性,例如作业运行的命令或运行作业所需的凭据。 还可以使用它清除计划作业的执行历史记录。
若要使用此 cmdlet,请首先使用 Get-ScheduledJob cmdlet 获取计划作业。 然后,通过管道将计划作业传递给 Set-ScheduledJob ,或将作业保存在变量中,并使用 InputObject 参数来标识作业。 使用 Set-ScheduledJob 的剩余参数更改作业属性或清除执行历史记录。
尽管可以使用 Set-ScheduledJob 更改计划的作业的触发器和选项,但 Add-JobTrigger、Set-JobTrigger 和 Set-ScheduledJobOption cmdlet 提供了更轻松的方法来完成这些任务。 若要创建新的计划作业,请使用 Register-ScheduledJob cmdlet。
Set-ScheduledJob 的 Trigger 参数添加一个或多个启动作业的作业触发器。 触发器 参数是可选的,因此可以在创建计划作业时添加触发器,稍后添加作业触发器,添加 RunNow 参数以立即启动作业,使用 Start-Job cmdlet 随时启动作业,或将未触发的计划作业保存为其他作业的模板。
Set-ScheduledJob 是 WINDOWS PowerShell 中包含的 PSScheduledJob 模块中作业计划 cmdlet 的集合之一。
有关计划作业的详细信息,请参阅 PSScheduledJob 模块中的“关于”主题。
导入 PSScheduledJob 模块,然后键入:Get-Help about_Scheduled* 或查看about_Scheduled_Jobs。
此 cmdlet 已在 Windows PowerShell 3.0 中引入。
示例
示例 1:更改作业运行的脚本
PS C:\> Get-ScheduledJob -Name "Inventory"
Id         Name            Triggers        Command                                  Enabled
--         ----            --------        -------                                  -------
1          Inventory       {1}             C:\Scripts\Get-Inventory.ps1             True
The second command uses the Get-ScheduledJob cmdlet to get the Inventory scheduled job. A pipeline operator (|) sends the scheduled job to the **Set-ScheduledJob** cmdlet. The **Set-ScheduledJob** cmdlet uses the *Script* parameter to specify a new script, Get-FullInventory.ps1. The command uses the *Passthru* parameter to return the scheduled job after the change.
PS C:\> Get-ScheduledJob -Name "Inventory" | Set-ScheduledJob -FilePath "C:\Scripts\Get-FullInventory.ps1" -Passthru
Id         Name            Triggers        Command                                  Enabled
--         ----            --------        -------                                  -------
1          Inventory       {1}             C:\Scripts\Get-FullInventory.ps1         True
此示例演示如何更改在计划作业中运行的脚本。
第一个命令使用 Get-ScheduledJob cmdlet 获取清单计划作业。 此输出显示该作业运行 Get-Inventory.ps1 脚本。
此命令不是必需的;包含它只是为了显示脚本更改的效果。
示例 2:删除计划作业的执行历史记录
PS C:\> Get-ScheduledJob BackupArchive | Set-ScheduledJob -ClearExecutionHistory
此命令删除当前执行历史记录,并保存了 BackupArchive 计划作业的作业结果。
该命令使用 Get-ScheduledJob cmdlet 获取 BackupArchive 计划作业。 管道运算符 (|) 将作业发送到 Set-ScheduledJob cmdlet 以更改作业。 Set-ScheduledJob cmdlet 使用 ClearExecutionHistory 参数删除执行历史记录和保存的结果。
有关计划作业的执行历史记录和保存的作业结果的详细信息,请参阅about_Scheduled_Jobs。
示例 3:更改远程计算机上的计划作业
PS C:\> Invoke-Command -Computer "Server01, Server02" -ScriptBlock {Get-ScheduledJob | Set-ScheduledJob -InitializationScript \\SrvA\Scripts\SetForRun.ps1}
此命令更改 Server01 和 Server02 计算机上所有计划作业中的初始化脚本。
该命令使用 Invoke-Command cmdlet 在 Server01 和 Server02 计算机上运行命令。
远程命令以获取计算机上的所有计划作业的 Get-ScheduledJob 命令开头。 计划的作业通过管道传输到 Set-ScheduledJob cmdlet,该 cmdlet 将初始化脚本更改为 SetForRun.ps1。
参数
-ArgumentList 
		指定由 FilePath 参数指定的脚本参数或由 ScriptBlock 参数指定的命令的值。
参数属性
| 类型: | Object[] | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ScriptBlock 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
					FilePath 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Authentication
指定用于对用户凭据进行身份验证的机制。 此参数的可接受值为:
- 违约
- 基本
- Credssp
- 摘要
- Kerberos
- 谈判
- NegotiateWithImplicitCredential
默认值为 Default。 有关此参数的值的详细信息,请参阅 MSDN 库中 AuthenticationMechanism 枚举。
警告:凭据安全支持提供程序(CredSSP)身份验证(其中用户凭据传递到要进行身份验证的远程计算机)旨在用于需要对多个资源进行身份验证的命令,例如访问远程网络共享。 此机制会增加远程操作的安全风险。 如果远程计算机遭到入侵,则传递给它的凭据可用于控制网络会话。
参数属性
| 类型: | AuthenticationMechanism | 
| 默认值: | Default | 
| 接受的值: | Default, Basic, Negotiate, NegotiateWithImplicitCredential, Credssp, Digest, Kerberos | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ScriptBlock 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
					FilePath 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-ClearExecutionHistory  
		删除当前执行历史记录和已保存的计划作业结果。
作业执行历史记录和作业结果保存在创建作业的计算机上的 $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs 目录中。 若要查看执行历史记录,请使用 Get-Job cmdlet。 若要获取作业结果,请使用 Receive-Job cmdlet。
此参数不会影响任务计划程序写入 Windows 事件日志的事件,也不会阻止 Windows PowerShell 保存作业结果。 若要管理保存的作业结果数,请使用 MaxResultCount 参数。
参数属性
| 类型: | SwitchParameter | 
| 默认值: | False | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
Execution
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Credential
指定有权运行计划作业的用户帐户。 默认值为当前用户。
键入用户名(如 User01 或 Domain01\User01),或输入 PSCredential 对象,例如 Get-Credential cmdlet 中的一个。 如果只输入用户名,系统会提示输入密码。
参数属性
| 类型: | PSCredential | 
| 默认值: | Current user | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ScriptBlock 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
					FilePath 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-FilePath 
		指定计划作业运行的脚本。 输入本地计算机上的 .ps1 文件的路径。 若要指定脚本参数的默认值,请使用 ArgumentList 参数。 每个计划作业都必须具有 ScriptBlock 或 FilePath 值。
参数属性
| 类型: | String | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					FilePath 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-InitializationScript 
		指定 Windows PowerShell 脚本(.ps1)的完全限定路径。 初始化脚本在为后台作业创建的会话中运行,该会话在由 ScriptBlock 参数指定的命令或由 FilePath 参数指定的脚本之前运行。 可以使用初始化脚本来配置会话,例如添加文件、函数或别名、创建目录或检查先决条件。
若要指定运行主作业命令的脚本,请使用 FilePath 参数。
如果初始化脚本生成错误(包括非终止性错误),则计划作业的当前实例不会运行,其状态为“Failed”。
参数属性
| 类型: | ScriptBlock | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ScriptBlock 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
					FilePath 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-InputObject 
		指定要更改的计划作业。 输入包含 ScheduledJobDefinition 的变量 对象或键入 ScheduledJobDefinition 对象(如 Get-ScheduledJob 命令)的命令或表达式。 还可以通过管道将 ScheduledJobDefinition 对象传递给 Set-ScheduledJob。
如果指定多个计划作业,Set-ScheduledJob 对所有作业进行相同的更改。
参数属性
| 类型: | ScheduledJobDefinition | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | 0 | 
| 必需: | True | 
| 来自管道的值: | True | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-MaxResultCount  
		指定为计划作业维护的作业结果条目数。 默认值为 32。
Windows PowerShell 保存磁盘上计划作业的每个触发实例的执行历史记录和结果。 此参数的值确定为此计划作业保存的作业实例结果数。 当作业实例结果数超过此值时,Windows PowerShell 将删除最早的作业实例的结果,以便为最新作业实例的结果腾出空间。
作业执行历史记录和作业结果保存在创建作业的计算机上的 $home\AppData\Local\Microsoft\Windows\PowerShell\ScheduledJobs\<JobName>\Output\<Timestamp> 目录。 若要查看执行历史记录,请使用 Get-Job cmdlet。 若要获取作业结果,请使用 Receive-Job cmdlet。
MaxResultCount 参数设置计划作业的 ExecutionHistoryLength 属性的值。
若要删除当前执行历史记录和作业结果,请使用 ClearExecutionHistory 参数。
参数属性
| 类型: | Int32 | 
| 默认值: | 32 | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ScriptBlock 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
					FilePath 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Name
指定计划作业和计划作业实例的新名称。 该名称在本地计算机上必须是唯一的。
若要标识要更改的计划作业,请使用 InputObject 参数,或通过管道将计划作业从 Get-ScheduledJob 传递给 Set-ScheduledJob。
此参数不会更改磁盘上的作业实例的名称。 它仅影响此命令完成后启动的作业实例。
参数属性
| 类型: | String | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ScriptBlock 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
					FilePath 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-PassThru 
		返回一个对象,该对象表示你正在处理的项目。 默认情况下,此 cmdlet 不生成任何输出。
参数属性
| 类型: | SwitchParameter | 
| 默认值: | False | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
(All)
| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-RunAs32 
		在 32 位进程中运行计划作业。
参数属性
| 类型: | SwitchParameter | 
| 默认值: | False | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ScriptBlock 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
					FilePath 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-RunEvery 
		用于指定运行作业的频率。 例如,使用此选项每 15 分钟运行一次作业。
参数属性
| 类型: | TimeSpan | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ScriptBlock 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
					FilePath 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-RunNow 
		一旦 Set-ScheduledJob cmdlet 运行,就立即启动作业。 此参数无需触发任务计划程序在注册后立即运行 Windows PowerShell 脚本,并且不需要用户创建指定开始日期和时间的触发器。
参数属性
| 类型: | SwitchParameter | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ScriptBlock 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
					FilePath 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-ScheduledJobOption  
		设置计划作业的选项。 输入 ScheduledJobOptions 对象,例如使用 New-ScheduledJobOption cmdlet 或哈希表值创建的对象。
注册计划作业或使用 Set-ScheduledJobOption 或 Set-ScheduledJob cmdlet 设置或更改选项时,可以为计划作业设置选项。
许多选项及其默认值决定了计划作业是否运行以及何时运行。 在计划作业之前,请务必查看这些选项。 有关计划作业选项(包括默认值)的说明,请参阅 New-ScheduledJobOption。
若要提交哈希表,请使用以下键。 在以下哈希表中,键的默认值显示。
@{# Power SettingsStartIfOnBattery=$False;StopIfGoingOnBattery=$True; WakeToRun=$False; # Idle SettingsStartIfNotIdle=$False; IdleDuration="00:10:00"; IdleTimeout="01:00:00"; StopIfGoingOffIdle=$True; RestartOnIdleResume=$False;# Security settingsShowInTaskScheduler=$TrueRunElevated=$False;# MiscRunWithoutNetwork=$False;DoNotAllowDemandStart=$False;MultipleInstancePolicy=IgnoreNew# Can be IgnoreNew, Parallel, Queue, StopExisting}
参数属性
| 类型: | ScheduledJobOptions | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ScriptBlock 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
					FilePath 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-ScriptBlock 
		指定计划作业运行的命令。 将命令括在大括号 ({ }) 中以创建脚本块。 若要指定命令参数的默认值,请使用 ArgumentList 参数。
每个 Register-ScheduledJob 命令都必须使用 ScriptBlock 或 FilePath 参数。
参数属性
| 类型: | ScriptBlock | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ScriptBlock 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
-Trigger
指定计划作业的触发器。 输入一个或多个 ScheduledJobTrigger 对象,例如 New-JobTrigger cmdlet 返回的对象,或作业触发器键和值的哈希表。
作业触发器可以根据一次性计划或重复计划自动启动计划作业,或者在事件发生时这样做。
作业触发器是可选的。 可以在创建计划作业时添加触发器,使用 Add-JobTrigger 或 Set-ScheduledJob cmdlet 添加触发器,或使用 Start-Job cmdlet 立即启动计划作业。 还可以创建和维护没有作业触发器的计划作业。
若要提交哈希表,请使用以下键。
              @{Frequency="Once" (or Daily, Weekly, AtStartup, AtLogon);At="3am"(或任何有效的时间字符串);DaysOfWeek="Monday", "Wednesday"(或任意组合的星期名称);Interval=2(或任何有效的频率间隔);RandomDelay="30minutes"(或任何有效的时间跨度字符串);User="Domain1\User01"(或任何有效用户;仅与 AtLogon 频率值一起使用)
}
参数属性
| 类型: | ScheduledJobTrigger[] | 
| 默认值: | None | 
| 支持通配符: | False | 
| 不显示: | False | 
参数集
					ScriptBlock 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
					FilePath 
					
				 
				| Position: | Named | 
| 必需: | False | 
| 来自管道的值: | False | 
| 来自管道的值(按属性名称): | False | 
| 来自剩余参数的值: | False | 
CommonParameters
此 cmdlet 支持通用参数:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 有关详细信息,请参阅 about_CommonParameters。
输入
ScheduledJobDefinition
可以通过管道将计划作业传递给 Set-ScheduledJob。
输出
None or Microsoft.PowerShell.ScheduledJob.ScheduledJobDefinition
如果使用 Passthru 参数,Set-ScheduledJob 将返回已更改的计划作业。 否则,此 cmdlet 不会生成任何输出。
相关链接
- 关于计划任务
- Add-JobTrigger
- Disable-JobTrigger
- Disable-ScheduledJob
- Enable-JobTrigger
- Enable-ScheduledJob
- Get-JobTrigger
- Get-ScheduledJob
- Get-ScheduledJobOption
- New-JobTrigger
- New-ScheduledJobOption
- Register-ScheduledJob
- Remove-JobTrigger
- Set-JobTrigger
- Set-ScheduledJob
- Set-ScheduledJobOption
- Unregister-ScheduledJob