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
以上!