Powershellスケジュールタスクコマンドレット を使用して、サーバーでスケジュールタスクを作成しています。
このAPIを使用して「ユーザーがログインしているかどうかに関係なく実行する」ことを選択するにはどうすればよいですか?
以下のように、action
、trigger
、principal
、およびsettings
オブジェクトを作成し、それらを_Register-ScheduledTask
_に渡しました。
_$action = New-ScheduledTaskAction -Execute foo.exe -Argument "bar baz"
$trigger = New-ScheduledTaskTrigger -Once -At $startTime -RepetitionInterval (New-TimeSpan -Minutes 1) -RepetitionDuration ([Timespan]::MaxValue)
$principal = New-ScheduledTaskPrincipal -UserId "$($env:USERDOMAIN)\$($env:USERNAME)" -LogonType ServiceAccount
$settings = New-ScheduledTaskSettingsSet -MultipleInstances Parallel
Register-ScheduledTask -TaskName $taskName -TaskPath "\my\path" -Action $action -Trigger $trigger -Settings $settings -Principal $principal
_
このようなスケジュールされたタスクを作成すると、デフォルトでは「ユーザーがログオンしているときにのみ実行」になります。
この質問 はCOMオブジェクトを使用してこれを行う方法を示し、 この1つ schtasks.exeを使用していますが、_*-ScheduledTask*
_コマンドレットを使用してどうすればよいですか?
$ principalを削除し、ユーザーとパスワードでタスクを登録する必要があります。
Register-ScheduledTask -TaskName $taskname `
-TaskPath "\my\path" `
-Action $action `
-Trigger $trigger `
-User "$env:USERDOMAIN\$env:USERNAME" `
-Password 'P@ssw0rd' `
-Settings $settings
これを行うには資格情報をスクリプトに登録する必要があり、Packerや他のシステム/構成の自動化などからこれを行うことはできないため、現在最も高い評価の回答を好まないか承認しません。これを行うためのより良い/適切な方法がありますが、Aeyounが言及しましたが、システムユーザーとして実行するプリンシパルを適切に設定する方法については詳しく説明しませんでした。
$action = New-ScheduledTaskAction -Execute foo.exe -Argument "bar baz"
$trigger = New-ScheduledTaskTrigger -Once -At (Get-Date) -RepetitionInterval (New-TimeSpan -Minutes 1) -RepetitionDuration ([Timespan]::MaxValue)
$principal = New-ScheduledTaskPrincipal -UserID "NT AUTHORITY\SYSTEM" -LogonType ServiceAccount -RunLevel Highest
$settings = New-ScheduledTaskSettingsSet -MultipleInstances Parallel
Register-ScheduledTask -TaskName "tasknamehere" -TaskPath "\my\path" -Action $action -Trigger $trigger -Settings $settings -Principal $principal
タスクスケジューラGUIの[ユーザーがログインしているかどうかにかかわらず実行する]オプションは、New-ScheduledTaskPrincipal -LogonType S4U
と同等です。
実行レベルチェックも制御します。
RunLevel
プリンシパルに関連付けられているタスクを実行するために必要な特権レベルを指定します。
例:「最高」または「制限」