Scratch
Function Write-Log {
Param($ScriptState)
Switch ($ScriptState) {
"Information" {
$EventId = 17623
$EventLevel = 0 # 0=Info, 1=Error, 2=Warning
}
"Warning" {
$EventId = 17624
$EventLevel = 2 # 0=Info, 1=Error, 2=Warning
}
"Error" {
$EventId = 17625
$EventLevel = 1 # 0=Info, 1=Error, 2=Warning
}
}
$End = Get-Date
$TimeCount = (New-TimeSpan -Start $StartTime -End $End)
$MomApi.LogScriptEvent("$ScriptName executed in $($TimeCount.Minutes)`m $($TimeCount.Seconds)`s $($TimeCount.Milliseconds)`ms", $EventId, $EventLevel, "`nRunning as: $Account`nWorkflow Name: $WorkflowName`nManagement Pack: $($MPName) $("($MpVersion)")`nPowerShell Version: $PSVersion`nScript output: $Message")
}
Function Set-TerminatingError {
$ScriptState = "Error"
$Message += "A terminating error occurred. Error output: (" + $_.Exception.Message + ").`n"
Write-Log -ScriptState $ScriptState
}
Function Get-LastUpdateCheck {
Try {
$PSVersion = $PSVersionTable.PSVersion
[string]$PSMajor = $PSVersion.Major
[string]$PSMinor = $PSVersion.Minor
$PSVersion = $PSMajor + "." + $PSMinor
$Bag = $MomApi.CreatePropertyBag()
$RegKey = "HKLM:\SOFTWARE\WOW6432Node\Network Associates\TVD\Shared Components\Framework"
$RegValue = "LastUpdateCheck"
$WarningThreshold = $StartTime.AddMinutes(-3)
$GetRegValue = ((Get-ItemProperty -ErrorAction Ignore -Path $RegKey).$RegValue)
If ($GetRegValue) {
$ConvertRegTime = [DateTime]::ParseExact($GetRegValue, 'yyyyMMddHHmmss', $null)
If ($ConvertRegTime -lt $WarningThreshold) {
$FormatConvertRegTime = $ConvertRegTime.ToString("dd/MM/yyyy HH:mm:ss")
$TimeCount = (New-TimeSpan -Start $ConvertRegTime -End $StartTime)
$Bag.AddValue("Result", "BAD")
$Bag.AddValue("Message", "The last security update check was $($TimeCount.Days) days ago on $FormatConvertRegTime.")
}
else {
$Bag.AddValue("Result", "GOOD")
$Bag.AddValue("Message", "OK")
}
}
else {
$Message += "Registry value missing: $RegKey\$RegValue."
$Bag.AddValue('Result', 'BAD')
$Bag.AddValue('Message', $Message)
}
$Bag
# FOR TESTING
$MomApi.Return($Bag)
#>
# Can add functionality here to set warning state but there is no need in this script.
$ScriptState = "Information"
Write-Log -ScriptState $ScriptState
}
Catch {
Set-TerminatingError
}
}
# Declare all constants used by the script
$MomApi = New-Object -comObject 'MOM.ScriptAPI'
$ScriptName = "LastUpdateCheck.ps1"
$Account = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name
$WorkflowName = "Trellix.Monitor.LastUpdateCheck"
$MPName = "Trellix.Monitoring"
$MpVersion = "2023.5.16.4"
[DateTime]$StartTime = Get-Date
Get-LastUpdateCheck
Comments
Post a Comment