Использование PowerShell для получения значений расписания работы SQL - PullRequest
0 голосов
/ 04 марта 2020

В настоящее время я получаю расписание заданий для существующего задания SQL и хочу получить значения частоты его выполнения, т. Е. Ежедневно, еженедельно, ежемесячно и т. Д. c, а затем узнать, когда оно должно выполняться Далее, и если работа выполняется в выходные дни. Я понимаю, как получить всю эту информацию, выполнив

Get-SqlAgent -ServerInstance "$SERVER" | Get-SqlAgentJob $job | Get-SqlAgentJobSchedule | Format-List -Property *

Это показывает мне всю относительную информацию, которая мне нужна

Parent                     : Test_Job
ActiveEndDate              : 12/31/9999 12:00:00 AM
ActiveEndTimeOfDay         : 23:59:59
ActiveStartDate            : 3/4/2020 12:00:00 AM
ActiveStartTimeOfDay       : 00:00:00
DateCreated                : 3/4/2020 2:08:00 PM
FrequencyInterval          : 1
FrequencyRecurrenceFactor  : 0
FrequencyRelativeIntervals : First
FrequencySubDayInterval    : 2
FrequencySubDayTypes       : Hour
FrequencyTypes             : Daily
IsEnabled                  : True
JobCount                   : 1

Я смотрю на страницу Microsoft о том, как понять все частоты информация, но пока кажется, что единственный вариант - это иметь кучу вложенных операторов IF, которые определяют, как часто он выполняется. Я могу сделать это таким образом, но я решил, что должен быть более чистый способ получения необходимой мне информации. Вот как я сейчас разбираю информацию

if($frequency -eq "DAILY")
    {
        $MINUTES_LATEST_RUN_SUCCESS = "1500"
        #Code here to see how often it runs in a day

    }
    elseif($frequency -eq "WEEKLY")
    {
        $MINUTES_LATEST_RUN_SUCCESS = "11520"
        #Code here to see how how many days a week it runs

    }
    elseif($frequency -eq "MONTHLY")
    {
        $MINUTES_LATEST_RUN_SUCCESS = "50400"
       #Code here to see how which day it runs a month
    }
    else
    {
        $MINUTES_LATEST_RUN_SUCCESS = "1500"
    }

Я подумал, что это не самый лучший подход.

1 Ответ

0 голосов
/ 05 марта 2020

Каждый раз, когда вы получаете много операторов if / then, пора использовать переключатель. Для этой идеи существуют примеры блоков кода в PowerShell ISE (CRTL + J) и VSCode (CRTl + ALT + J).

$a = 5
switch ($a) 
{ 
    1 {"The color is red."} 
    2 {"The color is blue."} 
    3 {"The color is green."} 
    4 {"The color is yellow."} 
    5 {"The color is orange."} 
    6 {"The color is purple."} 
    7 {"The color is pink."}
    8 {"The color is brown."}
    default {"The color could not be determined."}
}

Ваш, но, конечно, добавьте другой код по мере необходимости в блоке.

$frequency = 'DAILY'
switch ($frequency) 
{ 
    DAILY {"The job is run $frequency"} 
    WEEKLY {"The job is run $frequency"} 
    MONTHLY {"The job is run $frequency"} 
    default {$MINUTES_LATEST_RUN_SUCCESS = "1500"}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...