Write-AutoPatchLog.ps1
#write log with verbose option Function Write-AutoPatchLog { [CmdletBinding()] param ( [Parameter(Mandatory=$True, Position=1)] [ValidateNotNullOrEmpty()] [string] $message, [string] $logFile = $Global:AutoPatchDSCLogFile, [switch] $writeError, [switch] $writeWarning, [switch] $writeInformation, [switch] $writeDebug ) (Get-PSCallStack)[1].command #Default if non specified if ($logfile -eq '') {$logFile = 'C:\Windows\AutoPatchLog.txt'} #make sure log directory exists $logDir = (Split-path $logFile) if (-not (test-path -PathType Container -Path $logDir)) {New-Item -ItemType Directory -Path $logDir} #Write to the log file and verbose stream $output = "[$((Get-PSCallStack)[2].command):$((Get-PSCallStack)[1].command)] $(Get-Date): $message" try { $output | Out-File -FilePath $logFile -Append } catch { Write-Error $_.Exception } if ($writeError) {Write-Error $output} elseif ($writeWarning) {Write-Warning $output} elseif ($writeDebug) {Write-Debug $output} elseif ($writeInformation) {Write-Information $output} else {Write-Verbose $output} } |