注:この回答は結局解決には至ってません。どなたか、分かる方にフォローいただければ幸いです。
まず、トリガーの種類はプロパティで定義されているのではなく、WMIクラスそのものがトリガーの種類ごとに定義されています。
たとえば、「ログオン時」は「MSFT_TaskLogonTrigger」、
「アイドル時」は「MSFT_TaskIdleTrigger」です。
したがって、トリガーの種類が何であるかを調べるには、
Get-ScheduledTask -TaskName TaskName | select -ExpandProperty triggers | foreach {$_.CimClass.CimClassName}
のようにすれば良いかと思います。
次に本題の、トリガーの種類を変更する方法についてですが、トリガーはNew-ScheduledTaskTriggerコマンドレットで作成できます。
たとえばトリガーを「ログオン時」に変更するには、
Set-ScheduledTask -TaskName TaskName -Trigger (New-ScheduledTaskTrigger -AtLogon)
のようにすればOKです。
が、「アイドル時」のトリガーを作成するパラメータはどうも無いようです。(ScheduledTasksモジュールのコマンドレットは何故かこういうよく分からない実装抜けがいくつかあります)
New-CimInstanceコマンドレットでMSFT_TaskIdleTriggerオブジェクトを作成して、Get-ScheduledTaskコマンドレットで取得したMSFT_ScheduledTaskオブジェクトのTriggersプロパティに追加してやろうと思ったのですが、Set-CimInstanceコマンドレットはModifyInstanceメソッドを受け付けないため機能せず…。
作成したMSFT_TaskIdleTriggerオブジェクトをSet-ScheduledTask -Triggerで指定してやろうとしても、型が違うと怒られました。
ScheduledTasksモジュールをあきらめて、schedule.serviceというCOMオブジェクトを使うしかないかもしれません。
以下に例があります。
Hey, Scripting Guy! コンピューターがアイドル状態のときにスクリプトを実行する方法はありますか
すごく負けた気分ですが…