命名って難しい

変数、関数、クラスなどなど実装より命名に毎回悩むタイプの人間による技術や趣味についてのメモ。

Powershellでタスクスケジューラのタスクをまとめてエクスポートするスクリプト

サーバーに多数タスクが登録されているのですが、 何かあった時のためにタスクをエクスポートし、バックアップしようと思い作成。

前提

以下の環境を前提とします。

  • Scheduled Tasks Cmdletsが使える

ソースコード

$taskBasePath = "\MyTask\*"
$taskSaveDir = "C:\MyTaskBackup"

Get-ScheduledTask -TaskPath $taskBasePath  | foreach {
    $taskDir = Join-Path $taskSaveDir  $_.TaskPath
    if( -not (Test-Path -Path $taskDir)) {
        mkdir -Path $taskDir
    }
    $path = (Join-Path $taskDir "$($_.TaskName).xml")
    Export-ScheduledTask -TaskName $_.TaskName -TaskPath $_.TaskPath | Out-File $path # -WhatIf
}

解説

使う時書き換える変数については以下表を参照。

変数 用途 備考
taskBasePath タスクスケジューラの特定のパス。 このフォルダにまとめて定義しておけばよいという運用をしてます。
taskSaveDir 保存先のパス。 ここをSVNやGITのリポジトリに指定して定期的に自動コミット/プッシュしたりしたい。

動作としては 指定のパスのタスクを、格納しているフォルダの中に、そのタスク名で保存する という感じです。

無いフォルダは勝手に作ります。

既存のタスクを削除したりはしないので何度でも実行可能。

参考

Scheduled Tasks Cmdlets in Windows PowerShell

以上!