TrainingUtilsAGC.psm1
param ( [switch]$Verbose, [switch]$Debug, [string]$MessageText, [string]$MessageLevel, [string]$FileName ) function logger{ param( [parameter(Mandatory=$true, HelpMessage="Mensaje")] [string]$MessageText, [parameter(Mandatory=$true, HelpMessage="Nivel(INFO, WARNING, ERROR, DEBUG, VERBOSE")] [ValidateSet("INFO","WARNING","ERROR","DEBUG","VERBOSE",IgnoreCase = $false)] [string]$MessageLevel, [parameter(Mandatory=$false, HelpMessage="Archivo en el que escribir los logs")] [ValidateScript({ if($_.IndexOfAny([System.IO.Path]::GetInvalidFileNameChars()) -ne -1){ $errorMessage = "El nombre del archivo contiene un caracter invalido" throw $errorMessage }else{ $true } })] [string]$FileName ) process{ $logText = "[$(Get-Date)][$MessageLevel]: $MessageText" if(-Not(($Verbose -And $($MessageLevel -eq "VERBOSE")) -or ($Debug -And $($MessageLevel -eq "DEBUG")))){ write-host $logText } if($FileName){ fileOutput $FileName } } } function fileOutput{ param( [parameter(Mandatory=$true, HelpMessage="Archivo en el que escribir los logs")] [ValidateScript({ if($_.IndexOfAny([System.IO.Path]::GetInvalidFileNameChars()) -ne -1){ $errorMessage = "El nombre del archivo contiene un caracter invalido" throw $errorMessage }else{ $true } })] [string]$FileName ) $logText | Out-File -FilePath $FileName -Append } |