Public/Write-ATMDEventLog.ps1
function Write-ATMDEventLog { <# .SYNOPSIS Создает запись в журнале событий Windows. .DESCRIPTION Использую объект класса System.Diagnostics.EventInstance функиця создает запись в журнале событий Windows. .PARAMETER EventLogName Определяет имя журнала событий Windows, в который будет производится запись. По-умолчанию имеет значение "ATMD Event Log" .PARAMETER EventLogSource Опредеяет источник сообщения в журнале событий. По-умолчанию имеет значение "PSScript" .PARAMETER CategoryId Определяет значение в столбце "Каьегория задачи" в журнале событий. .PARAMETER InstanceId Определяет код события для записи в журнале событий. .PARAMETER EntryType Определяет тип записив журнале Windows. Допустимые значения: 'Error','FailureAudit','Information','SuccessAudit','Warning'. .PARAMETER MessageParams Набор подстановочных параметров для формирования сообения в журнале событий. Данные используются для замены шаблонов пдстановки (%1, %2 и т.д.) в тексте на кокретные значения. .EXAMPLE PS C:\> Write-ATMDEventLog -CategoryId 2 -InstanceId 1000 -EntryType 'Information' -MessageParams 'ATMD\username' Для более полного понимания параметров следуюет ознакомиться в ресурсами библиотеки ATMDEventLogMessages.dll .INPUTS При вызове функции обязательно указывать код события, тип события и категорию. .NOTES Функция записывает данные в локальный журнал событий, то есть на том узле, где выполняется. Сответственно, функция не может быть использована на машинах с Linux. #> [CmdletBinding()] param ( [Parameter(Mandatory = $false, Position = 0)] [System.String] $EventLogName = 'ATMD Event Log', [Parameter(Mandatory = $false, Position = 1)] [System.String] $EventLogSource = 'PSScript', [Parameter(Mandatory = $true, Position = 2)] [System.Int32] $CategoryId, [Parameter(Mandatory = $true, Position = 3)] [System.Int64] $InstanceId, [Parameter(Mandatory = $true, Position = 4)] [ValidateSet('Error', 'FailureAudit', 'Information', 'SuccessAudit', 'Warning')] [System.String] $EntryType, [Parameter(Mandatory = $false, Position = 5)] [System.Object] $MessageParams ) begin { } process { try { if ($IsLinux) { throw [System.Configuration.ConfigurationException]::New('This operation system does not supported.') } $EventLog = New-Object System.Diagnostics.Eventlog($EventLogName) $EventLog.Source = $EventLogSource switch ($EntryType) { 'Error' { $EventType = [System.Diagnostics.EventLogEntryType]::Error } 'FailureAudit' { $EventType = [System.Diagnostics.EventLogEntryType]::FailureAudit } 'Information' { $EventType = [System.Diagnostics.EventLogEntryType]::Information } 'SuccessAudit' { $EventType = [System.Diagnostics.EventLogEntryType]::SuccessAudit } 'Warning' { $EventType = [System.Diagnostics.EventLogEntryType]::Warning } Default { $EventType = [System.Diagnostics.EventLogEntryType]::Information } } $EventInstance = New-Object System.Diagnostics.EventInstance($InstanceId, $CategoryId, $EventType) $EventLog.WriteEvent($EventInstance, $MessageParams) } catch { #$PSCmdlet.ThrowTerminatingError($PSItem) Write-Error -Exception $PSItem.Exeception } } end { } } |