覚え書

ScheduledTasks

一覧

Get-Command -Module ScheduledTasks

すでに登録されてる物の取得

Get-ScheduledTask

登録

Register-ScheduledTask -TaskPath \ -TaskName task_name -Action $action -Trigger $trigger -Settings $settings -User $user -Force

-TaskPathは保存場所。 -TaskNameは名前。 -Actionは実行するプログラムの場所とか引数。 New-ScheduledTaskAction -Execute exe_pathのように作成。 -Triggerは実行のタイミング。 New-ScheduledTaskTrigger -Daily -At ~~~とかNew-ScheduledTaskTrigger -AtStartUpとか。 -Settingsはこまごまとした設定。 New-ScheduledTaskSettingsで作成。 -UserはOptional。 実行ユーザーをきめる。 管理者権限で実行させたい場合は-User ($env:COMPUTERNAME + "\Administrator")のように与える。 -Forceは上書きする。

Tips

まずは公式ドキュメントをみる。 ただ、ちょっと例が少ない。 PowerShell で スケジューラタスク(SchedulerTask) を操作するも参照した。

また、既に登録されてるタスクをGet-ScheduledTaskで取得して、その中身を見るのも役に立つ。

あと、taskschd.exeはパスが通ってる。

Event Viewer

eventvwr.exeで起動できるが、PowerShellでも見ることができる。

ProviderNameなどでフィルタリングできるが、Event Viewerにあった管理イベント一覧をフィルタする方法がよくわからなかったので、 そのフィルタからGUIでXMLを出して、-FilterXmlで指定することにした。

これがそのXML。

Event Viewerっぽく表示する(管理者権限が必要)。

> Get-WinEvent -FilterXml $filter_xml | sort TimeCreated -Descending -Top 30 | select Level, LevelDisplayName, TimeCreated, ProviderName, Id, Message | Format-Table

メモ

  • 一応sortSort-ObjectselectSelect-Object
  • sort -Descendingにすると-Top, -Bottomの挙動も逆になるのでこの順番にした
  • selectProviderNameを選択することでProviderNameごとのTableではなくできる。gci -rでも同様のことができる。
  • Format-TableはPropertiesが多すぎてもTableにしてくれるので便利。

あとは適宜、whereでフィルタすればいいはず。


なんとなくpowershellに慣れてきた。