Шаблон Powrshell для ускорения создания скрипта - PullRequest
0 голосов
/ 13 февраля 2020

Мы пишем все больше и больше скриптов, в частности, для выполнения вызовов 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>

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