На машине с 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.