examples/Invoke-EndpointMaintenance.ps1
|
[CmdletBinding()] param( [string]$ReportDirectory = "$env:ProgramData\EndpointForge\Reports", [switch]$Remediate, [switch]$ExitWithCode ) $ErrorActionPreference = 'Stop' Import-Module EndpointForge -MinimumVersion 0.2.0 Set-EFConfiguration -LogPath "$env:ProgramData\EndpointForge\endpointforge.jsonl" -LogLevel Information $timestamp = Get-Date -Format 'yyyyMMdd-HHmmss' $health = Get-EFEndpointHealth $compliance = Get-EFComplianceReport $health | Export-EFEndpointReport -Path (Join-Path $ReportDirectory "health-$timestamp.json") -Force | Out-Null $compliance | Export-EFEndpointReport -Path (Join-Path $ReportDirectory "compliance-$timestamp.json") -Force | Out-Null if ($Remediate -and -not $compliance.IsCompliant) { $remediation = Invoke-EFEndpointRemediation -Confirm:$false $remediation | Export-EFEndpointReport -Path (Join-Path $ReportDirectory "remediation-$timestamp.json") -Force | Out-Null $exitCode = [math]::Max($health.ExitCode, $remediation.ExitCode) } else { $exitCode = [math]::Max($health.ExitCode, $compliance.ExitCode) } $result = [pscustomobject]@{ ComputerName = $env:COMPUTERNAME Health = $health.Status Compliance = $compliance.IsCompliant ExitCode = $exitCode } $result if ($ExitWithCode) { exit $exitCode } |