Windows 7を使用していて、「SchTasks」と呼ばれるタスクスケジューラのコマンドラインモードユーティリティを使用して、オプションでスケジュールされたタスクを作成したいと考えています。
ただし、Schtasksの使用にはいくつかの問題があります。
GULタスクスケジューラアプリケーションを使用しているときのように、コマンドラインにすべてのオプションが必要です。
イベントID4801 はワークステーションのロックが解除されましたに対応します。私が私の回答で説明しているように、このイベントのロギングをオンにすることができます here 。
これで、次のように schtasks を使用して、このイベントによってトリガーされるタスクを作成できます。
schtasks /Create /RU "Username" /SC ONEVENT /MO "*[System[Provider[@Name='Microsoft-Windows-Security-Auditing'] and EventID=4801]]" /EC Security /TN "Taskname" /TR "Drive:\path to\program.exe" /F
ここでは/ ECパラメータを使用して Event Channel を定義しています(この場合はSecurityログ)。 。 [〜#〜] mo [〜#〜]またはModifierパラメータは、関心のあるイベントに一致させるために必要なXPathフィルタを指定するために使用されます。
ただし、イベントのログをオンにする必要なしに、ワークステーションのロック解除時トリガーを使用できると述べる場合があります。もちろん正しいでしょう。タスクで使用可能なトリガーは次のとおりです。
緑でマークしたものは、schtasksの/ SCパラメータを使用して指定できます。
/SC schedule Specifies the schedule frequency.
Valid schedule types: MINUTE, HOURLY, DAILY, WEEKLY,
MONTHLY, ONCE, ONLOGON, ONSTART, ONIDLE, ONEVENT.
赤でマークしたものには、対応するschtasksオプションがないようです。 may そのようなトリガーを使用してタスクを作成するためのあいまいな方法がありますが、今日まで私はそれを見つけられず、それは不可能だと思う傾向があります(まだ簡単に理解できないschtasksのパラメータに関する詳細なドキュメントも役に立ちません)。
もちろん、 is 回避策があります。これにより、(ドラムロールをお願いします)...
タスクスケジューラUIを使用して、必要なトリガー(必要に応じて複数)を使用してタスクを作成し、XMLとしてエクスポートするだけです。もちろん、XMLをオンデマンドでインポートして、タスクを完全に再作成できます。
schtasks /Create /TN "Taskname" /XML "ExportedTask.xml"
私にとってうまくいったのはEventID 42
および/EC System
この投稿に基づくパラメータは次のとおりです。 パワーイベント(スリープとウェイクアップ)をイベントログに記録する Microsoftコミュニティで。
したがって、次のschtasks
は私にとってうまく機能しました。
schtasks /create /sc onevent /mo "*[System[(EventID=42)]]" /EC System /tn task1 /tr "batchfile.bat"
ロック解除イベントの監査をオンにする代わりに、次のコードはそのまま機能します。
schtasks /Create /SC ONEVENT /MO "*[System[(EventID=4624)]] and *[EventData[Data[9]="7"]]" /EC Security /TN "PF9I" /TR "\"C:\Program Files\Five9PlantronicsInterface\MyApps.bat"\" /F
秘訣は、Data [9]がプロパティLogonTypeに対応し、値7がロック解除イベントに対応するという事実にあります。