LoginSignup
4
4

More than 5 years have passed since last update.

PowerShellでタスクスケジューラのオプションをセットする

Posted at

Windowsでタスクスケジューラのタスクを生成するschtasksコマンドだと一部のオプションがセットできなかったので既存タスクのオプションをPowerShell経由でセットするメモです。

ちなみにやりたかったことは「次のネットワーク接続が使用可能な場合のみタスクを開始する」と「スケジュールされた時刻にタスクを開始できなかった場合、すぐにタスクを実行する」のオプションをONにするというやつです。

# タスク設定の取得
$taskSettings = (Get-ScheduledTask | where taskpath -eq \ | where TaskName -eq "mytask").Settings

# 条件>次のネットワーク接続が使用可能な場合のみタスクを開始する
$taskSettings.RunOnlyIfNetworkAvailable = "True"
# 設定>スケジュールされた時刻にタスクを開始できなかった場合、すぐにタスクを実行する
$taskSettings.StartWhenAvailable = "True"

# タスク設定を更新
Set-ScheduledTask -TaskName "mytask" -Settings $taskSettings

# 設定値を表示
 (Get-ScheduledTask | where taskpath -eq \ | where TaskName -eq "mytask").Settings | select RunOnlyIfNetworkAvailable, StartWhenAvailable
Write-Host "タスクスケジュラーオプションを設定しました"

Get-ScheduledTask/Set-ScheduledTaskはPowerShell3.0(Windows8)以降で使えます。
バージョンチェックを入れたい場合は、こんなかんじのをスクリプトの先頭に入れておけばよいかと。

if ($PSVersionTable.PSVersion.Major -lt 3) {
    $PSVersionTable.PSVersion
    Write-Host "PowerShellのバージョンが古いためタスクスケジュラーオプションが設定できません"
    Write-Host "Windows7の場合はタスクスケジュラーオプションを手動で設定して下さい"
    exit 1
}

ちなみにWindows7でもやりたい場合はPSK Moduleというのを使えばできるらしい(?)のですが、試してません。

参考
* http://tech.guitarrapc.com/entry/2013/09/03/200909

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4