Назад | Перейти на главную страницу

Запрашивать schtasks с помощью Powershell

На машине с Windows7 я пытаюсь запустить запрос, чтобы просмотреть все запланированные задачи, используя schtasks.exe

Это нормально, но я также хотел бы отфильтровать набор результатов, используя что-то вроде

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

Проблема в том, что этот schtasks не возвращает правильно отформатированный список для работы функции where.

Я также пробовал:

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

они тоже не работают.

Каким будет лучший способ запросить schtasks на локальном компьютере с помощью Win7 и иметь возможность фильтровать их?

Вы можете попробовать использовать schtasks, что приведет к синтаксическому анализу текста. Это почти всегда подвержено ошибкам, и определенно сложнее, чем получить вывод команды.

Так получилось, что модуль TaskScheduler находится в PowerShellPack. После установки пакета PowerShell для получения всех запланированных задач используйте:

Import-Module TaskScheduler
Get-ScheduledTask -Recurse

Поскольку это реальные объекты, для поиска задачи с определенным названием вы можете использовать:

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

В общем, вы обнаружите, что сообщество PowerShell намного усерднее занялось использованием командных строк, таких как schtasks, и превратило их в простые в использовании командлеты, такие как Get-ScheduledTask.

Смотрите также:

Отправка автоматических писем с использованием модуля TaskScheduler

Надеюсь это поможет

Вот сообщение в блоге Я писал об этом. По сути, я взял вывод / FO LIST / V, записал его в файл и импортировал обратно как объекты с помощью import-csv.

если вам не нужно делать это в PowerShell, то будет работать следующее

schtasks / запрос | findstr / i "моя задача"

версия ps
schtasks / запрос | ? {$ _ -like 'mytask'}

Вы можете попробовать:

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

Хитрость заключается в том, чтобы сначала преобразовать вывод в CSV, а затем обратно в объект PowerShell.

Вы слишком много думаете об этом.

Командная строка для того, что вы хотите schtasks / query / s% computername% | FIND / I "% name_of_task%"

пример schtasks / query / s server01 | FIND / I "расписание"

Лучшие варианты - от Alex, потому что вам не нужна библиотека, и вы преобразуете строковые ответы из schtasks в объект Powershell.