web-dev-qa-db-ja.com

月曜から金曜の午前8時から6時まで毎時間実行するようにPowerShellでタスクをスケジュールする方法PM

実行するタスクをスケジュールする必要があります。

  • 月曜日から金曜日
  • 午前8時から午後6時まで毎時

これは通常のタスクスケジューラGUIから実行できますが、このタスクを実行するためにグループ管理サービスアカウントを使用しているため、Powershellから実行する必要があります。

-RepetitionDurationコマンドレットで-RepetitionIntervalおよびNew-ScheduledTaskTriggerパラメータを使用してみましたが、それを使用するには、-once parameter

お知らせ下さい!

enter image description here

3
DivZ

これは、これに対処するためにマイクロソフトが文書化したアプローチです。

注:GUIが表示されている場合でも、ドロップダウンボックスにある設定オプションを使用する必要があります自由形式のフィールドになるには、そうではありません。

見る:

PowerShellを使用した高度なスケジュールタスクパラメーターの構成

不足しているパラメータ

これで、スクリプト、つまりスクリプトを実行するスケジュールされたタスクができました。サーバーまたはワークステーションが起動するたびに実行されます。しかし、私たちは要件の1つを満たすことができませんでした。また、タスクは1日の間10分ごとに繰り返す必要があります。戻って繰り返し間隔または繰り返し期間を追加しようとすると、どちらも-AtStartupパラメーターのオプションではないことがわかります。

GUIを介して、スケジュールされたタスクパラメータを使用できます。

ただし、-AtStartupパラメーターを選択した場合、PowerShell New-ScheduledTaskTriggerコマンドレットを介してこれらを使用することはできません。これらは-Onceパラメーターを介して使用できますが、要件を満たしません。 解決策は、XMLスキーマを使用してタスクのプロパティを直接変更することです。これは、最初は複雑に聞こえるかもしれませんしかし、実際にはそれは非常に簡単で、スケジュールされたタスクの実質的にすべてのパラメーターを変更することができます。

手順1-スケジュールされたタスクを取得します。最初のステップは、作成したばかりのスケジュールされたタスクを取得し、それをオブジェクトに格納することです。

$Task = Get-ScheduledTask -TaskName "SampleScheduledTask"

手順2-変更するタスクの特定のプロパティを更新します。この例では、繰り返し期間と繰り返し間隔を追加します。

$Task.Triggers.Repetition.Duration = "P1D"
$Task.Triggers.Repetition.Interval = "PT10M"

P1Dが1日の期間と同じになること、およびPT10Mが10分の繰り返し間隔と同じになることを知っているのではないでしょうか。これらの値を取得するには、GUIで必要な期間と間隔を構成し、次のコマンドを使用してPowershellで結果を表示しました。

$Task.Triggers.Repetition | fl *

手順3-新しい構成をスケジュールされたタスクに保存します。ここでタスクの資格情報を再入力する必要があります。そうしないと、操作が失敗します。

$Task | Set-ScheduledTask -User "NT AUTHORITY\SYSTEM"
2
postanote