Вы устали видеть красный цвет в своей работе? Верны ли большинство из тех, что «Выполнено ненормально»? Что ж, есть способ избежать этих ложных срабатываний и предотвратить продвижение процесса.

Я координатор планирования работы в 1199SEIU National Benefit Fund, и моя роль заключается в создании и планировании рабочих мест и обеспечении успешного завершения каждой работы. Я использую приложение Tidal Workload Automation. Это отличное приложение для создания рабочих процессов. Например, если вы хотите отправить зашифрованный файл поставщику, вам нужно создать событие файла, которое запустит задание, как только файл будет помещен в определенную папку. Он возьмет файл и переместит его в другую папку, где GPG зашифрует файл. Затем он отправит файл поставщику по SFTP. После этого вы хотите очистить папки, удалив файл GPG и переместив текстовый файл в папку архива.

Допустим, есть задание, которое перемещает файл в другую папку и шифрует его. Что делать, если нет файла для перемещения? Вы могли бы подумать, что работа на этом остановится, если файла нет, но она все равно продолжается. Когда дело доходит до шифрования, задание терпит неудачу, потому что нет файла для шифрования, и в итоге вы получаете:

Это ложное срабатывание, потому что может не быть файла для шифрования из-за того, что в первую очередь нечего обрабатывать. Существует способ проверить, есть ли в папке какие-либо файлы, прежде чем начнется процесс шифрования. Это называется… коды выхода.

Сценарии Powershell после выполнения возвращают статус выполнения, который называется «код возврата» или «код выхода”. Успешное выполнение скрипта возвращает 0, а неудачное — ненулевое значение, которое обычно можно интерпретировать как код ошибки.

https://www.manageengine.com/products/desktop-central/returning-error-code-on-scripts-how-to.html

Tidal также имеет функцию в своем событии задания, которое выполняет задание в зависимости от кода выхода.

Поэтому я написал сценарий PowerShell, который будет выполняться на основе полученного кода выхода. В случае перемещения файла я написал оператор if, который проверяет папку на наличие файла. Если файла нет, то задание останавливается на этом и не продолжается из-за кода выхода (выход 1). Если есть файл, он перемещает его в другую папку, где происходит шифрование. Но вам, наверное, интересно, выход 1 выдаст ошибку, которая будет завершена ненормально. Еще одна замечательная функция TWA — сканирование вывода на предмет нормального завершения.

Вот почему у меня есть write-host для обоих условий в выражении if. Каждая работа ищет выход. Если вывода нет, то задание будет определено извне.

Итак, давайте посмотрим на этот скрипт PowerShell:

$file = Get-ChildItem "\\write\data\EDI\outbound\Vendor\Folder" -File | Measure-Object | %{$_.Count};
if($file -eq 0){add-content -path "\\TIDALAGENT\C$\Tidal_Jobs_DirCheck_logs\VendorFile.txt" -value " 'No File in folder \\write\data\EDI\outbound\Vendor\Folder <SysDate.123>' "; Write-Host "No file"; exit 1}else{copy "\\write\data\EDI\outbound\Vendor\Folder\VendorFile*.*" -destination "c:\TIDAL\outbound\Vendor\Folder"; Write-Host "exit 0"};

Сначала я определяю переменную, которая получит папку. В нем я ищу файл и преобразовываю его в числовое значение. Итак, если в папке есть один файл, $file = 1. Теперь оператор if выполнит проверку и увидит, есть ли файл в папке. Если в папке нет файла, он запишет его в текстовый файл с отметкой даты, чтобы планировщик знал, в какой день в папке нет файла. Это закончится выводом «Нет файла» и кодом выхода 1, что является ошибкой, но сканирование завершится нормально, потому что он ищет вывод с этим текстом (Нет файла). Работа остановится здесь, и в процессе не будет ошибки. Если есть файл, условие проверит и переместит файл в указанную папку с выходом «выход 0». Это продолжит процесс шифрования и отправит файл поставщику.

Итак, скажите мне, вы находите это полезным?