Krit.Hardening.psm1
|
<# .SYNOPSIS Krit.Hardening - Kritical Hardening toolkit (audit-only in v1.0.0). .AUTHOR Joshua Finley - Kritical Pty Ltd - https://kritical.net #> Set-StrictMode -Version Latest $ErrorActionPreference = 'Stop' # 1.0.1 - soft-import Krit.OmniFramework. Never fail hard at import time even # if Omni is missing or AppDomain-locked at an older version. Consuming # functions probe for OmniFramework at use time and degrade gracefully. function Import-KritHardenOmniSoft { [CmdletBinding()] param([switch] $Quiet) $already = Get-Module -Name Krit.OmniFramework -ErrorAction SilentlyContinue if ($already) { return @{ Ok=$true; Version=$already.Version; Source='already-loaded' } } $have = Get-Module -ListAvailable -Name Krit.OmniFramework -ErrorAction SilentlyContinue | Sort-Object Version -Descending | Select-Object -First 1 if (-not $have) { return @{ Ok=$false; Version=$null; Source='not-installed' } } try { Import-Module -Name Krit.OmniFramework -ErrorAction Stop $loaded = Get-Module -Name Krit.OmniFramework | Select-Object -First 1 return @{ Ok=$true; Version=$loaded.Version; Source='imported' } } catch { if (-not $Quiet.IsPresent) { Write-Warning ("Krit.OmniFramework soft-import failed: " + $_.Exception.Message) } return @{ Ok=$false; Version=$have.Version; Source='import-failed'; Error=$_.Exception.Message } } } try { Import-KritHardenOmniSoft -Quiet | Out-Null } catch { } $here = Split-Path -Parent $PSCommandPath foreach ($dir in 'Private','Public') { $folder = Join-Path $here $dir if (Test-Path -LiteralPath $folder) { Get-ChildItem -LiteralPath $folder -Filter '*.ps1' -File | Sort-Object Name | ForEach-Object { . $_.FullName } } } Export-ModuleMember -Function @( 'Test-KritHardenPrereqs', 'Install-KritHardenModules', 'Get-KritHardenModuleStatus', 'Test-KritHardenCompliance', 'New-KritHardenReport', 'Get-KritHardenBanner' ) |