Param($PackageDir, $LogDir) if ($PSBoundParameters.Count -ne 2) { Write-host "Error: -PackageDir -LogDir " ;exit 1} If ( -not (Test-Path $packagedir)) { Write-host "Error: -PackageDir does not exist." ;exit 1} If ( -not (Test-Path $LogDir)) { Write-host "Error: -LogDir does not exist." ;exit 1} function Write-Log { param ( [string]$Message, [string]$LogPath = "$env:TEMP\sigupdate.log" ) $timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss" $entry = "[$timestamp] $Message" Add-Content -Path $LogPath -Value $entry } $LogPath = "$LogDir\$(hostname)_sigupdate.log" if (Test-Path $logPath) { $logTime = (get-item $logPath).LastWriteTime } else { $logTime = get-Date("1900/1/1") } Write-Log -Message "Start sigupdate.ps1" -LogPath $LogPath $package = (Get-ChildItem -Path $packagedir| where {$_.name -eq "mpam-fe.exe"} | Sort Name | %{$_.FullName}) $currentSigVer = [version](Get-MpComputerStatus).AntivirusSignatureVersion $success = $true if ($package.Count -gt 0){ $newSigVer = [version](Get-ItemProperty $package).VersionInfo.ProductVersion if ($newSigVer -gt $currentSigVer) { $outmsg = "Signature Update is starting... " $outmsg = $outmsg + "`nCurrent Signature Version: $currentSigVer" $outmsg = $outmsg + "`nNew Signature Version: $newSigVer" Write-Output $outmsg Write-Log -Message $outmsg -LogPath $LogPath Copy-Item $package -Destination "$env:TEMP\" -Force Start-Process "$env:TEMP\mpam-fe.exe" -Wait if (!($LASTEXITCODE -eq 0)) { $success = $false $package = "+ " + (Get-Item $package).Name + ": Failed" } else { $package = "+ " + (Get-Item $package).Name + ": Success" } Write-Output $package Write-Log -Message $package -LogPath $LogPath $outmsg = "Current Microsoft Defender Security intelligence:" $outmsg = $outmsg + "`nVersion: $((Get-MpComputerStatus).AntivirusSignatureVersion)" $outmsg = $outmsg + "`nEngine Version: $((Get-MpComputerStatus).AMEngineVersion)" $outmsg = $outmsg + "`nPlatform Version: $((Get-MpComputerStatus).AMProductVersion)" $outmsg = $outmsg + "`nLast Updated: $((Get-MpComputerStatus).AntivirusSignatureLastUpdated )" Write-Output $outmsg Write-Log -Message $outmsg -LogPath $LogPath } else { $outmsg = "No update." Write-Output $outmsg Write-Log -Message $outmsg -LogPath $LogPath exit 0 } } exit 0