Print Friendly
Отправить в сообщении

Сбор запланированных заданий средствами PowerShell

запланированные заданияЗапланированные задания. Казалось, что может быть проще..?

Есть утилита schtasks.exe, она умеет собирать, создавать и удалять задания. Пишем

schtasks.exe /?

и далее по обстоятельствам, вернее по необходимости.

Однако не все так просто как кажется. При наличии десятка серверов все кажется простым и понятным, но при наличии 500 и более серверов задача слегка усложняется. Вполне возможно что на рабочих станциях включен планировщик и вам необходимо собрать данные по запланированному заданию которое вы назначили через GPP, как пример можно привести задачу по развертыванию FEP 2010.

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

Простой метод сбора информации о запланированных заданий приведен ниже. Скрипт формирует CSV файл который потом замечательно можно проанализировать в Excel.

# добавляем снапин от Quest
Add-PSSnapin Quest.ActiveRoles.ADManagement

# задаем нужный OU
$OU = ‘Domain/Members Servers’

# указываем имя файла отчета
$reportFile = "report.txt"

$servers = Get-QADComputer -SearchRoot $OU -SearchScope Subtree

foreach ($server in $servers) {
Write-Host $server.dnshostname
$tasks = schtasks.exe /Query /FO CSV /v /s $server.dnshostname
$tasks | ft HostName,TaskName,"Last Run Time" | Out-File -NoClobber -Append $reportFile
# если нет задачи выводить информацию в файл, а сразу получать результат на экран то можно
# сделать следующим образом.
# $tasks | ConvertFrom-Csv | ft HostName,TaskName,"Last Run Time"
}

PS Как мне правильно заметили эта публикация является модификацией более старой статьи.

Приглашаю присоединиться ко мне в следующих сервисах:
facebook Google Plus вКонтакте Twitter
Если Вам понравилась статья, то вы можете подписаться на RSS. А также бесплатно подписаться по E-mail и получать актуальную информацию в числе первых.
Получать обновления на email

Вы можете оставить комментарий.

7 Комментариев »

 
  • 1# Kazun (76 комм.):

    $tasks | ft HostName,TaskName,»Last Run Time» – правильнее будет(т.к получим тоже самое,что и в $tasks),

    $tasks | ConvertFrom-Csv | ft HostName,TaskName,»Last Run Time»

      Цитировать

  • 3# Kazun (76 комм.):

    Я может не совсем понятно выразился,но:

    $tasks | ft HostName,TaskName,»Last Run Time» – Либо здесь не надо вообще использовать Format-Table,т.к он не знает из чего извлекать данные свойства,их нет просто текст.

    Либо сначала применить ConvertFrom-Csv с последующим извлечением нужных свойств и записи в файл.

      Цитировать

  • 5# Kazun (76 комм.):

    Наглядный пример:
    PS > $tasks | ft HostName,TaskName,»Last Run Time» | select -f 1
    «HostName»,»TaskName»,»Next Run Time»,»Status»,»Logon Mode»,»Last Run Time»,»Last Result»,»Author»,»Task To Run»,»Start
    In»,»Comment»,»Scheduled Task State»,»Idle Time»,»Power Management»,»Run As User»,»Delete Task If Not Rescheduled»,»St
    op Task If Runs X Hours and X Mins»,»Schedule»,»Schedule Type»,»Start Time»,»Start Date»,»End Date»,»Days»,»Months»,»Re
    peat: Every»,»Repeat: Until: Time»,»Repeat: Until: Duration»,»Repeat: Stop If Still Running»

    PS > $tasks | select -f 1
    «HostName»,»TaskName»,»Next Run Time»,»Status»,»Logon Mode»,»Last Run Time»,»Last Result»,»Author»,»Task To Run»,»Start
    In»,»Comment»,»Scheduled Task State»,»Idle Time»,»Power Management»,»Run As User»,»Delete Task If Not Rescheduled»,»St
    op Task If Runs X Hours and X Mins»,»Schedule»,»Schedule Type»,»Start Time»,»Start Date»,»End Date»,»Days»,»Months»,»Re
    peat: Every»,»Repeat: Until: Time»,»Repeat: Until: Duration»,»Repeat: Stop If Still Running»

      Цитировать

  • 6# Сергей Мариничев (565 комм.):

    Дело в том что
    ConvertFrom-Csv | Select HostName,TaskName,»Last Run Time»

    Выдаст не совсем то что требуется, а изначально требуется CSV файл который можно пихнуть в Excel.

    Можно добавить фильтр на проверку пустой строки…

      Цитировать

  • 7# Kazun (76 комм.):

    Сергей Мариничев: Дело в том чтоConvertFrom-Csv | Select HostName,TaskName,»Last Run Time»Выдаст не совсем то что требуется, а изначально требуется CSV файл который можно пихнуть в Excel.Можно добавить фильтр на проверку пустой строки…

    Когда $tasks | ft HostName,TaskName,»Last Run Time» ,я не думаю что всем будет легко понять,что имел ввиду автор. Т.е сохранить полный результат в файл CSV и дальше обрабатывать или все же получить заданные свойства и только их записать в файл.Да хорошо,что здесь не возникло проблем,а так могут.

      Цитировать

 

Добавить комментарий

XHTML: Вы можете использовать тэги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>