none
Powershell получить информацию о задании в шеуллере? RRS feed

  • Вопрос

  • Здравствуйте, есть много заданий в шедулере  - все еженедельные - необходимо определить  скриптом в какие дни недели запускается каждое, в какое время и какой недельный интервал.

    Get-ScheduledTaskInfo -TaskName выводит только время предыдущего и следующего выполнения

    еще можно получить все данные  так Get-ScheduledTask Job_f | Export-ScheduledTask | Out-File C:\ClusterStorage\Volume1\ps\f\1.txt

    но как теперь выбрать из текста нужные данные???

    • Изменено shmelfrol 9 сентября 2016 г. 7:51
    9 сентября 2016 г. 7:26

Ответы

  • enum DoW {
    	Sunday    = 1
    	Monday    = 2
    	Tuesday   = 4
    	Wednesday = 8
    	Thursday  = 16
    	Friday    = 32
    	Saturday  = 64
    }
    
    $day = Get-ScheduledTask $Task | Foreach {$_.Triggers.DaysOfWeek}
    [Enum]::GetValues([DoW]).Where({$day -band $_})
    
    
    PS (STA) > Get-ScheduledTask 123 | Foreach {$_.Triggers.DaysOfWeek}
    57
    
    PS (STA) > $day = Get-ScheduledTask 123 | Foreach {$_.Triggers.DaysOfWeek}
    PS (STA) > [Enum]::GetValues([DoW]).Where({$day -band $_})
    Sunday
    Wednesday
    Thursday
    Friday

    12 сентября 2016 г. 11:38
  • Kazun, шикарно! А может у вас есть под рукой ссылка, где почитать про магию, которая тут происходит? Навскидку в google не нашел. Ну или, возможно, это интересная информация для статьи в вашем блоге :)

    В PowerShell v5 добавили простые конструкции для создания enum и class'ов- https://blogs.technet.microsoft.com/heyscriptingguy/2015/09/02/adding-enums-to-powershell-5-classes/

    New language features in PowerShell 5.0 - https://msdn.microsoft.com/en-us/powershell/wmf/5.0/class_newtype

    about_Classes - https://technet.microsoft.com/en-us/library/dn820211.aspx

    .Where - добавили в PowerShell 4 - http://www.powershellmagazine.com/2014/10/22/foreach-and-where-magic-methods/

    Для использования enum:

    PS (STA) > [DayOfWeek]::GetNames([DayOfWeek])
    Sunday
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    PS (STA) > [DayOfWeek]::GetNames([DayOfWeek]) | Select @{n="Name";e={$_}},@{n="Value";e={[DayOfWeek]::$_.value__}}
    
    Name      Value
    ----      -----
    Sunday        0
    Monday        1
    Tuesday       2
    Wednesday     3
    Thursday      4
    Friday        5
    Saturday      6

    $day -band $_ - обычное побитовое сравнение. 

    PS (STA) > [Enum]::GetValues([DoW]).Foreach({"$_ : $(36 -band $_)"})
    Sunday : 0
    Monday : 0
    Tuesday : 4
    Wednesday : 0
    Thursday : 0
    Friday : 32
    Saturday : 0

    12 сентября 2016 г. 12:29

Все ответы

  • $task = Get-ScheduledTask test
    
    $task.Triggers | ft StartBoundary, DaysOfWeek, WeeksInterval -AutoSize
    
    
    

    • Предложено в качестве ответа Kazun 12 сентября 2016 г. 8:25
    9 сентября 2016 г. 8:01
  • daysofweek выводит значение в виде суммы - каждый день есть степень двойки-

    например если 127 - то это все дни, если 65 - то это воскресенье и суббота

    вс - 1 , пн- 2 вт - 4 - ср - 8 чт - 16 пт - 32 - сб - 64

    как мне из всего этого скриптом определить в какой день выполняется задание.

    выдаст мне например 36 - как мне вычислить, что это среда и пятница????

    12 сентября 2016 г. 10:35
  • enum DoW {
    	Sunday    = 1
    	Monday    = 2
    	Tuesday   = 4
    	Wednesday = 8
    	Thursday  = 16
    	Friday    = 32
    	Saturday  = 64
    }
    
    $day = Get-ScheduledTask $Task | Foreach {$_.Triggers.DaysOfWeek}
    [Enum]::GetValues([DoW]).Where({$day -band $_})
    
    
    PS (STA) > Get-ScheduledTask 123 | Foreach {$_.Triggers.DaysOfWeek}
    57
    
    PS (STA) > $day = Get-ScheduledTask 123 | Foreach {$_.Triggers.DaysOfWeek}
    PS (STA) > [Enum]::GetValues([DoW]).Where({$day -band $_})
    Sunday
    Wednesday
    Thursday
    Friday

    12 сентября 2016 г. 11:38
  • Kazun, шикарно! А может у вас есть под рукой ссылка, где почитать про магию, которая тут происходит? Навскидку в google не нашел. Ну или, возможно, это интересная информация для статьи в вашем блоге :)
    12 сентября 2016 г. 12:14
  • Kazun, шикарно! А может у вас есть под рукой ссылка, где почитать про магию, которая тут происходит? Навскидку в google не нашел. Ну или, возможно, это интересная информация для статьи в вашем блоге :)

    В PowerShell v5 добавили простые конструкции для создания enum и class'ов- https://blogs.technet.microsoft.com/heyscriptingguy/2015/09/02/adding-enums-to-powershell-5-classes/

    New language features in PowerShell 5.0 - https://msdn.microsoft.com/en-us/powershell/wmf/5.0/class_newtype

    about_Classes - https://technet.microsoft.com/en-us/library/dn820211.aspx

    .Where - добавили в PowerShell 4 - http://www.powershellmagazine.com/2014/10/22/foreach-and-where-magic-methods/

    Для использования enum:

    PS (STA) > [DayOfWeek]::GetNames([DayOfWeek])
    Sunday
    Monday
    Tuesday
    Wednesday
    Thursday
    Friday
    Saturday
    PS (STA) > [DayOfWeek]::GetNames([DayOfWeek]) | Select @{n="Name";e={$_}},@{n="Value";e={[DayOfWeek]::$_.value__}}
    
    Name      Value
    ----      -----
    Sunday        0
    Monday        1
    Tuesday       2
    Wednesday     3
    Thursday      4
    Friday        5
    Saturday      6

    $day -band $_ - обычное побитовое сравнение. 

    PS (STA) > [Enum]::GetValues([DoW]).Foreach({"$_ : $(36 -band $_)"})
    Sunday : 0
    Monday : 0
    Tuesday : 4
    Wednesday : 0
    Thursday : 0
    Friday : 32
    Saturday : 0

    12 сентября 2016 г. 12:29