Public/Write-AtmdScriptLog.ps1
function Write-AtmdScriptLog { <# .Synopsis Записывает в текстовый файл информацию. .Description Использование функции предполагается только для отладки скрипта. В качестве основного средства "логирования работы" предполагается журнал Windows "ATMD Event Log". .Parameter Message Определяет сообщение, которое будет записано в файл. .Parameter Path Определяет путь к файлу. .Parameter Level Определяет тип сообщения: Информация, Предупреждение, Ошибка. .Inputs См. описание переменных. .Outputs Функция не возвращает результат. #> [CmdletBinding()] Param ( [Parameter(Mandatory = $true, ValueFromPipelineByPropertyName = $true, Position = 0)] [ValidateNotNullOrEmpty()] [Alias("LogContent")] [string]$Message, [Parameter(Mandatory = $false, Position = 1)] [Alias('LogPath')] [string]$Path = "C:\Logs\AtmdScriptLog.$(Get-Date -Format "yyyyMMdd").log", [Parameter(Mandatory = $false, Position = 2)] [ValidateSet("Error", "Warn", "Info")] [string]$Level = "Info" ) Begin { if (-not(Test-Path -Path $Path)) { New-Item $Path -Force -ItemType File -ErrorAction SilentlyContinue | Out-Null } } Process { try { if (-not(Test-Path -Path $Path)) { throw 'Не удалось создать файл для записи лога скрипта Atmd-logonScript.ps1' } $FormattedDate = Get-Date -Format "yyyy-MM-dd HH:mm:ss" # Write message to error, warning, or verbose pipeline and specify $LevelText switch ($Level) { 'Error' { Write-Error $Message $LevelText = 'ERROR:' } 'Warn' { Write-Warning $Message $LevelText = 'WARNING:' } 'Info' { Write-Verbose $Message $LevelText = 'INFO:' } } # Write log entry to $Path "$FormattedDate $LevelText $Message" | Out-File -FilePath $Path -Append -Encoding utf8 } catch { Write-Error -Exception $PSItem.Exception -Message 'ОШИБКА: Не удается записать сообщение в лог!' } } End { } } |