Kar*_*y S 2 windows powershell scheduled-tasks
我正在尝试编写一个每天运行一次的Powershell脚本.它将执行的众多功能之一是确保脚本本身是最新的.我的问题是,因为我对脚本进行了版本控制,所以我需要更新我在脚本中创建的计划任务.
我在这里考虑了两种不同的方法,其中我也想不通:
Unregister-ScheduledTask -TaskName "mytask"然后注册Register-ScheduledTask并使用新路径重新创建它.在选项1失败后,我坚持执行选项2.我能够找到并取消注册我的任务,但是当尝试使用新路径注册它时,我收到以下错误:
Register-ScheduledJob : The scheduled job definition <myTask> already exists in the job definition store.
At line:3 char:1
+ Register-ScheduledJob -Name "<myTask>" -FilePath "C:\Apps\\Uploade ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (Microsoft.Power...edJobDefinition:ScheduledJobDefinition) [Register-ScheduledJob], ScheduledJobException
+ FullyQualifiedErrorId : CantRegisterScheduledJobDefinition,Microsoft.PowerShell.ScheduledJob.RegisterScheduledJobCommand
Run Code Online (Sandbox Code Playgroud)
编辑:为了澄清,我的预定任务路径类似于,C:\ Apps\myscript_v0.0.1.ps1因此,当我更新时,它将变为C:\ Apps\myscript_v0.1.5.ps1或者其他什么,我需要运行新版本而不是当前目标的旧版本.
好的,更改作业的文件路径很容易.首先我们得到这个工作,然后我们将scheduledjob对象传递给Set-ScheduledJob并指定-FilePath
$NewPath = GCI C:\Apps\myscript_*.ps1 | Select -last 1 -ExpandProperty FullName
Get-ScheduledJob MyJob | Set-ScheduledJob -FilePath $NewPath
Run Code Online (Sandbox Code Playgroud)
编辑:为了给予信用到期的信用,我要感谢Get-Help *-ScheduledJob接下来Get-Help Set-ScheduledJob -Full和示例1了解这个确切的情况......
Run Code Online (Sandbox Code Playgroud)Example 1: Change the script that a job runs The first command uses the Get-ScheduledJob cmdlet to get the Inventory scheduled job. The output shows that the job runs the Get-Inventory.ps1 script.This command is not required; it is included only to show the effect of the script change. 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 command 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
| 归档时间: |
|
| 查看次数: |
2846 次 |
| 最近记录: |