Public/Get-InforcerAssessment.ps1
|
<# .SYNOPSIS Retrieves available assessments from the Inforcer API. .DESCRIPTION Lists all assessments available for evaluation (e.g. Copilot Readiness, CIS Benchmarks, Essential Eight). Each assessment has an ID, name, description, tags, and type. .PARAMETER Format Raw (default). .PARAMETER OutputType PowerShellObject (default) or JsonObject. JSON uses Depth 100. .EXAMPLE Get-InforcerAssessment Lists all available assessments. .EXAMPLE Get-InforcerAssessment -OutputType JsonObject Returns assessments as a JSON string with full depth. .OUTPUTS PSObject or String .LINK https://github.com/royklo/InforcerCommunity/blob/main/docs/CMDLET-REFERENCE.md#get-inforcerassessment .LINK Connect-Inforcer .LINK Invoke-InforcerAssessment #> function Get-InforcerAssessment { [CmdletBinding()] [OutputType([PSObject], [string])] param( [Parameter(Mandatory = $false)] [ValidateSet('Raw')] [string]$Format = 'Raw', [Parameter(Mandatory = $false)] [ValidateSet('PowerShellObject', 'JsonObject')] [string]$OutputType = 'PowerShellObject' ) if (-not (Test-InforcerSession)) { Write-Error -Message 'Not connected yet. Please run Connect-Inforcer first.' -ErrorId 'NotConnected' -Category ConnectionError return } Write-Verbose 'Retrieving assessments...' $response = Invoke-InforcerApiRequest -Endpoint '/beta/assessments' -Method GET -OutputType $OutputType if ($null -eq $response) { return } if ($OutputType -eq 'JsonObject') { $response return } $result = $response if ($result -is [array]) { foreach ($item in $result) { if ($item -is [PSObject]) { $null = Add-InforcerPropertyAliases -InputObject $item -ObjectType Assessment $item.PSObject.TypeNames.Insert(0, 'InforcerCommunity.Assessment') } } } elseif ($result -is [PSObject]) { $null = Add-InforcerPropertyAliases -InputObject $result -ObjectType Assessment $result.PSObject.TypeNames.Insert(0, 'InforcerCommunity.Assessment') } $result } |