この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
ども。あいしんくいっと(@ithinkitnet)です。
Windowsで「ジョブの定期実行」を行う上で欠かせないのがタスクスケジューラになります。
タスクスケジューラはWindowsにおいて非常に重要な機能で、DropboxやGoogleといった各アプリケーションもたくさん利用しています。
LinuxでいうCRONのようなもので、GUIで設定が出来るのでジョブ数が少ない分には非常に扱いやすいのですが、登録するジョブ数が多くなればなるほど、GUIでの操作が拷問みたいにキツクなってきます。
GUIでタスクスケジューラのタスクをエクスポート/インポートする手順はこちら。
タスクスケジューラ移行はエクスポート/インポートを使おう
そもそも、繰り返し作業ってのはタスクスケジューラに限らずGUIと相性が良くないと思うんですよね〜。
というワケで、今回は「タスクスケジューラの一括エクスポートとインポート」についての方法を書いておきたいと思います。
Windowsのタスクスケジューラにおける一括エクスポート/インポートについて
もし、タスクスケジューラにた~くさん登録されたタスク群を他サーバに移行しなければならなくなったら・・・。
もう地獄ですし、もう考えたくはないですよね~。
新旧のタスクスケジューラ見比べながらGUIでポチポチ登録、でも良いんですけどね~。
時間があれば。
でも、タスクスケジューラに登録されたタスクの数が多ければ多いほど日が暮れそうだし、登録間違えそうだし。。。
そこで登場するのが、PowerShellスクリプトによる一括エクスポート/インポートになります。
フォルダ単位の一括エクスポート/インポートですけど、まぁ手でやるよりはマシって事で(笑)
個人が適当に作ったPowerShellスクリプトなので動作保障しません。
使用は自己責任、動かなかったらデバッグして下さい。
タスクスケジューラの一括エクスポート
タスクスケジューラの一括エクスポートはPowerShellスクリプトを作ってやると良いです。
$outPath = "C:\Users\Administrator\Desktop\tasks"
$outtask = "\"
$outFileName = "{0}.xml"
$sch = New-Object -ComObject("Schedule.Service")
$sch.Connect("localhost")
$tasks = $sch.GetFolder("$outtask").GetTasks(0)
$outfile_temp = Join-Path $outPath $outFileName
$tasks | %{
$xml = $_.Xml
$task_name = $_.Name
$outfile = $outfile_temp -f $task_name
$xml | Out-File $outfile
}
C:\Users\Administrator\Desktop\tasks以下にエクスポートデータが出力されます。
参考 タスクスケジューラのジョブを纏めてエクスポートする
タスクスケジューラの一括インポート
エクスポートしたファイルをタスクスケジューラへ一括で登録したい場合、
以下のようなPowerShellスクリプトを作ってやると良いと思います。
$XmlinPath = "C:\Users\Administrator\Desktop\tasks\"
$TaskinPath = "\hoge\"
$tasks = Get-ChildItem "$XmlinPath\*.xml" -name
foreach ($i in $tasks)
{
schtasks /create /XML $XmlinPath$i /TN "$TaskinPath$i".Replace(".xml","")
}
上記スクリプトを実行することでタスクスケジューラの「hoge」フォルダに一括でタスク登録されます。
どうですか。
タスクスケジューラの登録って意外と面倒。
作業効率アップ&ケアレスミスを防ぐという意味でも、タスクの一括エクスポート/インポートは積極的に使っていく事をオススメします。
ithinkit
以上、あいしんくいっとでした( ̄O ̄;)