Create NC Updater, WinUpdate, CMTraceLog
This commit is contained in:
51
testing/CMTraceLog.ps1
Normal file
51
testing/CMTraceLog.ps1
Normal file
@@ -0,0 +1,51 @@
|
||||
Function Write-LogEntry
|
||||
{
|
||||
#Write data to a CMTrace compatible log file. (Credit to SCConfigMgr - https://www.scconfigmgr.com/)
|
||||
|
||||
param(
|
||||
[parameter(Mandatory = $true, HelpMessage = "Value added to the log file.")]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$Value,
|
||||
[parameter(Mandatory = $true, HelpMessage = "Severity for the log entry. 1 for Informational, 2 for Warning and 3 for Error.")]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[ValidateSet("1", "2", "3")]
|
||||
[string]$Severity,
|
||||
[parameter(Mandatory = $true, HelpMessage = "Component of the log file.")]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$Component,
|
||||
[parameter(Mandatory = $false, HelpMessage = "Name of the log file that the entry will written to.")]
|
||||
[ValidateNotNullOrEmpty()]
|
||||
[string]$FileName
|
||||
)
|
||||
#Determine log file location
|
||||
$LogFilePath = $FileName
|
||||
#Construct time stamp for log entry
|
||||
if(-not(Test-Path -Path 'variable:global:TimezoneBias'))
|
||||
{
|
||||
[string]$global:TimezoneBias = [System.TimeZoneInfo]::Local.GetUtcOffset((Get-Date)).TotalMinutes
|
||||
if($TimezoneBias -match "^-")
|
||||
{
|
||||
$TimezoneBias = $TimezoneBias.Replace('-', '+')
|
||||
}
|
||||
else
|
||||
{
|
||||
$TimezoneBias = '-' + $TimezoneBias
|
||||
}
|
||||
}
|
||||
$Time = -join @((Get-Date -Format "HH:mm:ss.fff"), $TimezoneBias)
|
||||
#Construct date for log entry
|
||||
$Date = (Get-Date -Format "MM-dd-yyyy")
|
||||
#Construct context for log entry
|
||||
$Context = $([System.Security.Principal.WindowsIdentity]::GetCurrent().Name)
|
||||
#Construct final log entry
|
||||
$LogText = "<![LOG[$($Value)]LOG]!><time=""$($Time)"" date=""$($Date)"" component=""$($Component)"" context=""$($Context)"" type=""$($Severity)"" thread=""$($PID)"" file="""">"
|
||||
#Add value to log file
|
||||
try
|
||||
{
|
||||
Out-File -InputObject $LogText -Append -NoClobber -Encoding Default -FilePath $LogFilePath -ErrorAction Stop
|
||||
}
|
||||
catch [System.Exception]
|
||||
{
|
||||
Write-Warning -Message "Unable to append log entry to $FileName file. Error message at line $($_.InvocationInfo.ScriptLineNumber): $($_.Exception.Message)"
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user