fixed the event log error

This commit is contained in:
2025-12-11 17:30:35 -05:00
parent c0acdf38ed
commit a15c45be23

View File

@@ -544,6 +544,77 @@ $ConfirmPreference = 'None'
# - Level-based Event IDs and console colors
# - Global in-memory log cache
# - One-time Event Log/source initialization with optional auto-elevation
function Ensure-SVSMspEventLog {
[CmdletBinding()]
param(
[string]$EventSource = "SVSMSP_Module",
[string]$EventLog = "SVSMSP Events"
)
try {
# If the log already exists, we're done
if ([System.Diagnostics.EventLog]::Exists($EventLog)) {
return
}
# If the source exists but is bound to another log, rebind it
if ([System.Diagnostics.EventLog]::SourceExists($EventSource)) {
$current = [System.Diagnostics.EventLog]::LogNameFromSourceName($EventSource, '.')
if ($current -ne $EventLog) {
[System.Diagnostics.EventLog]::DeleteEventSource($EventSource)
}
}
New-EventLog -LogName $EventLog -Source $EventSource -ErrorAction Stop
}
catch {
Write-Host "[Warning] Failed to ensure Event Log '$EventLog': $($_.Exception.Message)" -ForegroundColor Yellow
}
}
function Write-SvsMspEventLog {
[CmdletBinding()]
param(
[Parameter(Mandatory)]
[string]$Message,
[ValidateSet('Information','Warning','Error')]
[string]$EntryType = 'Information',
[int]$EventId = 1000,
[string]$EventSource = 'SVSMSP_Module',
[string]$EventLog = 'SVSMSP Events'
)
# First attempt
try {
Write-EventLog -LogName $EventLog -Source $EventSource -EntryType $EntryType -EventId $EventId -Message $Message -ErrorAction Stop
return
}
catch {
$errMsg = $_.Exception.Message
# Only self-heal for the specific missing-log case
if ($errMsg -like '*The Log name*SVSMSP Events*does not exist*') {
Ensure-SVSMspEventLog -EventSource $EventSource -EventLog $EventLog
# Retry once after creating the log
try {
Write-EventLog -LogName $EventLog -Source $EventSource -EntryType $EntryType -EventId $EventId -Message $Message -ErrorAction Stop
}
catch {
Write-Host "[Warning] Failed to write to '$EventLog' even after Ensure-SVSMspEventLog: $($_.Exception.Message)" -ForegroundColor Yellow
}
}
else {
Write-Host "[Warning] Failed to write to '$EventLog': $errMsg" -ForegroundColor Yellow
}
}
}
function Write-LogHelper {
<#
.SYNOPSIS
@@ -789,6 +860,10 @@ if (-not [System.Diagnostics.EventLog]::SourceExists('$EventSource')) {
$invokeParams.PassThru = $true
}
if ($LogToEvent.IsPresent) {
Ensure-SVSMspEventLog -EventSource $EventSource -EventLog $EventLog
}
if ($PSBoundParameters.ContainsKey('ForegroundColorOverride')) {
# 1) print to console with the override color
Write-Host $formatted -ForegroundColor $ForegroundColorOverride