Мы пишем все больше и больше скриптов, в частности, для выполнения вызовов API, получения информации и оповещения об определенных условиях. Оповещения отправляются на канал команд Microsoft. Эти сценарии выполняются как запланированные задачи. Я использую только powershell v5 +
. Я попытался создать простой шаблон, с которого я нашел в Интернете и внес некоторые изменения. Мне нужна проверка ошибок и создание отчетов, что, по моему мнению, может быть сделано через Try / Catch / Наконец. Я также хочу, чтобы какой-нибудь базовый c протоколировался в go и проверял на наличие ошибок.
Хватит ли журналирования в последнем блоке, чтобы знать дату и время завершения скрипта? Будет ли использование $ error. Перехватывает ли исключение сообщение об ошибке? Кажется, мне повезло с этим, а иногда нет. То, что я пропускаю, имеет решающее значение для обеспечения того, чтобы скрипт выполнялся без присмотра, и чтобы об ошибках сообщалось при возникновении проблемы. Я также включу блок кода в раздел Catch для отправки ошибки на канал команд MS.
<#
.SYNOPSIS
<Overview of script>
.SYNTAX
<Cmdlet-Name> -Parameter <value>
.DESCRIPTION
<Brief description of script>
.PARAMETER <Parameter_Name>
<Brief description of parameter input required. Repeat this attribute if required>
.INPUTS
<Inputs if any, otherwise state None>
.OUTPUTS
<Outputs if any, otherwise state None - example: Log file stored in C:\Windows\Temp\<name>.log>
.EXAMPLE
<Example goes here. Repeat this attribute for more than one example>
.REMARKS
Version: 1.0
Author: <Name>
Creation Date: <Date>
#>
#---------------------------------------------------------[Variables]------------------------------------------------------------
$var1 = <stuff>
$var2 = <stuff>
#---------------------------------------------------------[Import Modules]--------------------------------------------------------
Import-Module <name>
#-----------------------------------------------------------[Functions]------------------------------------------------------------
Function <FunctionName> {
[CmdletBindinging()]
param(
[Parameter()]
[string]$MyOptionalParameter,
[Parameter(Mandatory)]
[int]$MyMandatoryParameter
)
Try{
<code goes here>
}
Catch {
Write-Host $Error.Exception
Out-File $Error.Exception
Break
}
Finally {
$time = Get-Date
"Script completed at $time" | Out-File $env:TEMP\MyScriptName.log
}
}
#-----------------------------------------------------------[Execution]------------------------------------------------------------
<FunctionName>