Powershellを使用してschtasksをクエリする


8

Windows7マシンで、schtasks.exeを使用してクエリを実行し、スケジュールされたすべてのタスクを表示しようとしています。

これは問題ありませんが、次のようなものを使用して結果セットをフィルタリングしたいと思います

schtasks /query | where { $_.TaskName -eq "myTask" } 

問題は、このschtasksがwhere関数が機能するための適切にフォーマットされたリストを返さないことです。

私も試しました:

schtasks /query /FO LIST
schtasks /query | format-list | where ....

それらも機能しません。

Win7を使用してローカルコンピューター上のschtasksをクエリし、それらをフィルターできる最善の方法は何でしょうか


そこのバックスラッシュとは何ですか?それschtasksはそこに期待されているものではなく、むしろスラッシュです。
ジョーイ

ハ!あなたが正しい。上記で修正しました
jdiaz

回答:


8

schtasksを使用すると、テキストを解析できます。これはほとんど常にエラーが発生しやすく、コマンドの出力を取得するよりも間違いなく困難です。

PowerShellPackにたまたまTaskSchedulerモジュールがあります。PowerShellパックをインストールしたら、スケジュールされたすべてのタスクを取得するには、次を使用します。

Import-Module TaskScheduler
Get-ScheduledTask -Recurse

これらは実際のオブジェクトなので、特定の名前のタスクを見つけるには、次のコマンドを使用できます。

Get-ScheduledTask -Recurse |  Where-Object { $_.Name -like "*Task*"}

一般的に、PowerShellコミュニティでは、schtasksなどのコマンドラインを使用するのが非常に難しく、Get-ScheduledTaskなどの使いやすいコマンドレットに変換されています。

関連項目:

TaskSchedulerモジュールを使用した自動メールの送信

お役に立てれば


1
これは、Win2k8ボックス(またはvista / W7)を使用している場合に最適です。残念ながら、それはW2k3サーバー(私の環境ではまだ非常に一般的です)では動作しません。
マイクシェパード

@MikeShepard新しいおもちゃが必要な場合は、11年前のオペレーティングシステムの使用を停止する必要があります。
Ryan Ries 2014年

1
それが私のキャリアの物語です。:-(
マイクシェパード

2

あなたがpowershellでそれを行う必要がない場合は、以下が機能します

schtasks / query | findstr / i "mytask"

psバージョン
schtasks / query | ?{$ _ -like 'mytask'}


PSを使用してタスクを作成、クエリ、削除するための完全なソースコードサンプル
Kiquenet 2012

2

これを行うことについて私が書いたブログ投稿は次のとおりです。基本的に、/ FO LIST / Vの出力を取得してファイルに書き込み、import-csvを使用してオブジェクトとしてインポートし直しました


2
あなたは正しい軌道に乗っていますが、ここでは一時ファイルへの書き込みは不要です:schtasks /query /fo csv /v|convertfrom-csvうまく動作します
Joey

これはきちんとしていますが、まだ簡単にクエリを実行することはできません
jdiaz

ヨハネス:その通りですが、スペース/コロン/スラッシュが埋め込まれたプロパティは本当に(本当に)嫌いです。jdiaz:クエリできないものは何ですか?私が投稿したスクリプトとJohannesの改訂はどちらも、プロパティを持つネイティブのPowerShellオブジェクトを返します。それらは他のpowershellエンティティと同じようにクエリ可能でなければなりません。
マイクシェパード

1
本当に-彼らはクエリ可能です... schtasks /query /fo csv /v /s "myserver" | convertfrom-csv | Select TaskName, "Last Run Time", Author | ? {$_.Author -notmatch "microsoft|N/A|Author"}あなたが持っているすべてのカスタムスケジュールされたタスクを提供します。
SliverNinja-MSFT 2014年

2

あなたは試すことができます:

schtasks /query /FO CSV | ConvertFrom-CSV | Where { $_.TaskName -eq "myTask" } 

コツは、まず出力をCSVに変換し、次にPowerShellオブジェクトに戻すことです。


0

あなたはそれを考えすぎています。

必要なもののコマンドラインschtasks / query / s%computername%| FIND / I "%name_of_task%"

例schtasks / query / s server01 | FIND / I "schedule"


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.