Windows7マシンで、schtasks.exeを使用してすべてのスケジュールされたタスクを表示するクエリを実行できます。
これは問題ありませんが、次のようなものを使用して結果セットをフィルタリングしたいと思います
schtasks /query | where { $_.TaskName -eq "myTask" }
問題は、このschtasksがwhere関数が機能するための適切にフォーマットされたリストを返さないことです。
私も試しました:
schtasks /query /FO LIST
schtasks /query | format-list | where ....
それらも機能しません。
Win7を使用してローカルコンピューター上のschtasksをクエリし、それらをフィルター処理するための最良の方法は何でしょうか
Schtasksを使用すると、テキストを解析できます。これはほとんど常にエラーが発生しやすく、コマンドの出力を取得するよりも間違いなく困難です。
PowerShellPack にTaskSchedulerモジュールが存在します。 PowerShellパックをインストールしたら、スケジュールされたすべてのタスクを取得するには、次を使用します。
Import-Module TaskScheduler
Get-ScheduledTask -Recurse
これらは実際のオブジェクトなので、特定の名前のタスクを見つけるには、次のコマンドを使用できます。
Get-ScheduledTask -Recurse | Where-Object { $_.Name -like "*Task*"}
一般に、PowerShellコミュニティでは、schtasksなどのコマンドラインを使用するのが非常に難しく、Get-ScheduledTaskなどの使いやすいコマンドレットに変換されています。
関連項目:
TaskSchedulerモジュールを使用した自動メールの送信
お役に立てれば
あなたは試すことができます:
schtasks /query /FO CSV | ConvertFrom-CSV | Where { $_.TaskName -eq "myTask" }
コツは、まず出力をCSVに変換し、次にPowerShellオブジェクトに戻すことです。
これはブログ投稿です 私はこれを行うことについて書きました。基本的に、/ FO LIST/Vの出力を取得してファイルに書き込み、import-csvを使用してオブジェクトとしてインポートし直しました
あなたがpowershellでそれをする必要がない場合は、次のように動作します
schtasks/query | findstr/i "mytask"
pSバージョン
schtasks/query | ?{$ _ -like 'mytask'}
あなたはそれを考えすぎています。
必要なもののコマンドラインschtasks/query/s%computername%| FIND/I "%name_of_task%"
例schtasks/query/s server01 | FIND/I "schedule"