7

Powershell v3 には、これらすべての新しいジョブ スケジューリング コマンドレットが付属しています。見栄えは良いのですが、特定のトリガーを作成するのに問題があります。特定の間隔で、毎日ジョブを実行し、1 時間ごとに繰り返す必要があります。

Task-Scheduler UI の使用は簡単ですが、New-JobTrigger コマンドレットの使い方がわかりません。

Daily パラメーター セットを使用する場合、繰り返しオプションはありません。

New-JobTrigger [-Daily] -At <DateTime> [-DaysInterval <Int32> ] [-RandomDelay <TimeSpan> ] [ <CommonParameters>]

Once パラメーター セットを使用すると、Daily オプションを使用できません

New-JobTrigger [-Once] -At <DateTime> [-RandomDelay <TimeSpan> ] [-RepetitionDuration <TimeSpan> ] [-RepetitionInterval <TimeSpan> ] [ <CommonParameters>]

私が必要としているが、明らかにうまくいかないのは、2つの組み合わせです。例えば:

New-JobTrigger -Daily -At xxxx -RepetitionDuration (New-TimeSpan -Hours 5) -RepetitionInterval (New-TimeSpan -Hours 1)

出来ますか?たぶん、同じ仕事のためにいくつかのトリガーを混ぜますか?

4

8 に答える 8

5

これは私のために働く:

注 - 元の質問が New-JobTrigger に関連していたことは知っていますが、その意図は、問題が両方に当てはまることを考えると、New-JobTrigger に変換できる可能性のある解決策を提供することでした。

$A = New-ScheduledTaskAction -execute "powershell" -argument "-nologo -noprofile -noninteractive C:\MyScript.ps1"
$T = New-ScheduledTaskTrigger -Once -At 03:00AM 
Register-ScheduledTask -TaskName StartBasicServices_Local -Trigger $T -Action $A -description "MyScript" -User "NT AUTHORITY\SYSTEM" -RunLevel 1      
$T.RepetitionInterval = (New-TimeSpan -Minutes 5)
$T.RepetitionDuration = (New-TimeSpan -Days 1)
Set-ScheduledTask StartBasicServices_Local -Trigger $T
于 2012-11-29T20:59:38.007 に答える
1

Add-JobTrigger については知っていますが、特定の要件を達成する方法がわかりません。ジョブを毎日実行し、特定の期間、1 時間ごとに繰り返します。例: 毎日、午前 10 時に、午後 5 時まで 1 時間ごとに繰り返します。— スカルムエガ

Register-ScheduledJob でジョブを作成します。次に、毎日のトリガーを追加します。これができれば素晴らしいのですが、-Daily は PowerShell 4.0 では機能しません。読んでください、私はあなたのための代替手段を持っています.

# Technet: http://technet.microsoft.com/en-us/library/hh849759.aspx
# To create a repeating schedule, use the Once parameter with the RepetitionDuration and RepetitionInterval parameters.
# -RepetitionInterval Repeats the job at the specified time interval. For example, if the value of this parameter is 2 hours, the job is triggered every two hours.
#  The default value, 0, does not repeat the job.
# -RepetitionDuration Repeats the job until the specified time expires. The repetition frequency is determined by the value of the RepetitionInterval parameter. 
#  For example, if the value of RepetitionInterval is 5 minutes and the value of RepetitionDuration is 2 hours, the job is triggered every five minutes for two hours.
#
$trigger = New-JobTrigger -Daily -At 10:00 -RepetitionDuration 7:00:00 -RepetitionInterval 1:00:00 -DaysofWeek 
Register-ScheduledJob -Name Test -Trigger $trigger -ScriptBlock {}

必要な時間ごとにトリガーされるように、ジョブを整理するだけです。

$trigger4am  = New-JobTrigger -Daily -At 04:10
Register-ScheduledJob -Name ArchiveProd -Trigger $trigger4am -ScriptBlock {E:\ArchiveProd.ps1}

$trigger8am  = New-JobTrigger -Daily -At 08:10
$trigger12pm = New-JobTrigger -Daily -At 12:10
$trigger6pm  = New-JobTrigger -Daily -At 18:10
Add-JobTrigger -Trigger $trigger8am  -Name ArchiveProd
Add-JobTrigger -Trigger $trigger12pm -Name ArchiveProd
Add-JobTrigger -Trigger $trigger6pm  -Name ArchiveProd

それがあなたが必要としていたものであることを願っています。私の状況ではうまく機能しますが、Daily パラメータを追加したいだけです。多分誰かが私のためにこれを改善できますか?

于 2014-08-06T15:40:35.190 に答える
1

私は一日中この問題に取り組んできましたが、ついに答えが出ました。できません。とにかくこれらのコマンドレットを使用していません。最初は、これが回避策として機能するかもしれないと思いました:

$Job = Register-ScheduledJob -Name "YourJobName"  {Gci};
$RepeatTrigger = New-JobTrigger -Once -At (Get-Date 10:00).ToShortTimeString()  -     RepetitionInterval (New-TimeSpan -Hours 1) -RepetitionDuration (New-TimeSpan -Hours 7);
$RepeatTrigger.Frequency = [Microsoft.PowerShell.ScheduledJob.TriggerFrequency]::Daily;
Add-JobTrigger -InputObject $Job -Trigger $RepeatTrigger

しかし、そうではありません。trace-command を使用すると、パラメーター セットに応じて属性を検証するように見えます。schtasks を使用する場合も同様です。

schtasks /create /tn YourTask /tr notepad.exe /sc Hourly 

1 時間ごとに作成されますが、1 回限りのタスクにする必要があります。一見すると、COM API 用の .Net ラッパーがあり、PoSH を初めて使用する場合は、おそらくこれが最善の策となるでしょう。CodePlex で見つけることができます。

于 2012-10-08T12:31:19.867 に答える
0

Add-JobTriggerスケジュールされたジョブに複数のジョブ トリガーを追加するために使用してみてください。

于 2012-10-07T17:55:00.123 に答える
0
clear
Import-Module TaskScheduler 

# Create a new task 
$task = New-Task 


Add-TaskAction -Task $task -Path "C:\Windows\notepad.exe"   
Add-TaskTrigger -Task $task -Daily -At "06:00" -Repeat "05:00" -For "12:00" 

# Register the task 
Register-ScheduledTask -Name "PowerShell - MyScript.ps1" -Task $task

Get-ScheduledTask PowerShell* | select -Property Name
# Remove-Task -n Power*
于 2012-10-08T10:11:05.980 に答える
0

「Register-ScheduledJob」で Scheduled-Job を作成する場合、毎日の実行と繰り返し間隔を組み合わせて設定することはできません。ScheduledJobTrigger オブジェクトのプロパティ「RepetitionInterval」と「RepetitionDuration」を手動で変更しても、トリガーは毎日または繰り返しで 1 回実行されるように設定されます。メソッドを介してジョブに対応するタスクを取得し、Get-ScheduledTaskそこでトリガーを変更することで、なんとか構成できました。

    $trigger = New-JobTrigger -Weekly -WeeksInterval 1 -At "06:00" -DaysOfWeek 月曜日、火曜日、水曜日、木曜日、金曜日     
    Register-ScheduledJob -Name $cronjobName -Trigger $trigger -ScriptBlock $scriptBlock
    $task = Get-ScheduledTask -TaskName $cronjobName
    $trigger = $task.Triggers
    $trigger.Repetition.Interval = "PT10M"
    $trigger.Repetition.Duration = "PT12H"
    Set-ScheduledTask -TaskPath $task.TaskPath -TaskName $cronjobName -Trigger $trigger
于 2021-02-10T10:53:07.607 に答える