注意点
エクスポートしたタスクスケジューラのXMLのUser IDを予め、新しい環境に合わせて、変更しておく必要がある。
UserIDの違いでインポートエラーが発生する場合は、下記のようなエラーメッセージが出力される。
実行権限
下記のようにオプションをつけて実行
C:\work\test>powershell -ExecutionPolicy RemoteSigned -File exp_task.ps1
理由は、下記リンク参照
C:\work\test>powershell -ExecutionPolicy RemoteSigned -File exp_task.ps1
理由は、下記リンク参照
- http://capm-network.com/?tag=PowerShell%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%E4%BD%9C%E6%88%90%E3%81%A8%E5%AE%9F%E8%A1%8C
- https://qiita.com/alchemist/items/e6706cd425f8f5e5032e
UserId:エラー: アカウント名とセキュリティ ID の間のマッピングは実行されませんでした。
Windowsタスクスケジューラエクスポート
タスクスケジューラの一括エクスポートは以下のようなPowerShellスクリプトを作って実行する
$outPath = "C:\work\test\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
}
Windowsタスクスケジューラインポート
エクスポートしたタスクスケジューラのXMLからインポートする場合は、下記のスクリプトを使って実行すれが、取り込まれる。
- $TaskinPath
- $TaskinPath = "\"はタスクスケジューラの直下に生成される
- $TaskinPath = "\hoge\"の場合は、hogeフォルダの下に生成される。
$XmlinPath = "C:\work\tasks\"
$TaskinPath = "\"
$tasks = Get-ChildItem "$XmlinPath\*.xml" -name
foreach ($i in $tasks)
{
schtasks /create /XML $XmlinPath$i /TN >"$TaskinPath$i".Replace(".xml","")
}
Poswer Shell
- Poswer Shellの実行
- Poswer Shellを起動し、下記のように実行。
PS C:\work> .\xxxx.ps1