Как я могу использовать предыдущее возвращение, чтобы определить, могу ли я отправить предупреждение Powerhsell? - PullRequest
0 голосов
/ 11 июля 2019

Я собираюсь использовать Dbatools, чтобы проверить, работает моя работа или нет. Если он не работает, мне нужно отправить уведомление по электронной почте.

У меня есть только несколько фонов с программированием PowerShell.

# Import-Module D:\Tools\dbatools\dbatools.psd1 if it isn't loaded
If ( ! (Get-module dbatools )) {
Import-Module D:\Tools\dbatools\dbatools.psd1
}

# Get the job status
Get-DbaAgentJob -SqlInstance My_SQL_Instance -Job My_Job_Name | Out-File C:\DBA\Result.txt

# Send the email alert if the job is not running
Send-MailMessage -From My_Email_Address -Subject "My_Job_Name job is not running..." -To User_Email_Address -Attachments C:\DBA\Result.txt -Body "The MiantoEDW replication job is not running..." -BodyAsHtml -SmtpServer My_SmtpServer

Мне нужно проверить свойство CurrentRunStatus, чтобы определить, отправлять оповещения по электронной почте или нет.

Ответы [ 2 ]

1 голос
/ 11 июля 2019

Я бы сделал что-то вроде следующего:

$jobStatus = Get-DbaAgentJob -SqlInstance My_SQL_Instance -Job My_Job_Name
$jobStatus | Select-Object Name,CurrentRunStatus | Export-Csv C:\DBA\Result.csv -NoTypeInformation
if ($jobStatus.CurrentRunStatus -ne "Executing") {
    # Run some code if job is not running
    Send-MailMessage -From My_Email_Address -Subject "My_Job_Name job is not running..." -To User_Email_Address -Attachments C:\DBA\Result.csv -Body "The MiantoEDW replication job is not running..." -BodyAsHtml -SmtpServer My_SmtpServer
}
else {
    # Run some code if job is running
}

Get-DbaAgentJob не отображает свойство CurrentRunStatus по умолчанию. Вам нужно будет восстановить его, что делается Select-Object CurrentRunStatus. Поскольку команда выводит объект, я решил использовать Export-Csv для экспорта более чистого вывода, который выравнивает свойства и значения объекта. $jobStatus хранит выходные данные команды Get-DbaAgentJob. Доступ к свойству $jobStatus.CurrentRunStatus для значения Executing проверит, выполняется ли задание в данный момент.

0 голосов
/ 11 июля 2019

Я не использовал dbatools, но я предполагаю, что CurrentRunStatus доступен в файле Result.txt, который вы выводите в?

Если это так, присвойте результат Get-DbaAgentJob переменной, а затем Out-Файл из этой переменной.Затем перейдите к свойству CurrentRunStatus из переменной, чтобы определить, следует ли отправлять предупреждение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...