Public/Get-HardeningLensBaseline.ps1
|
function Get-HardeningLensBaseline { <# .SYNOPSIS Lists built-in baselines or resolves a built-in/custom baseline. #> [CmdletBinding(DefaultParameterSetName = 'List')] param( [Parameter(ParameterSetName = 'Named')] [ValidateSet('Workstation', 'MemberServer', 'DomainController', 'AVDSessionHost')] [string]$Name, [Parameter(Mandatory, ParameterSetName = 'Path')] [string]$Path, [switch]$IncludeControls ) if ($PSCmdlet.ParameterSetName -eq 'List' -or ($PSCmdlet.ParameterSetName -eq 'Named' -and [string]::IsNullOrWhiteSpace($Name))) { $items = foreach ($baselineName in Get-HLBuiltinBaselineName) { $baseline = Resolve-HLBaseline -Name $baselineName [pscustomobject][ordered]@{ Name = [string]$baseline.name DisplayName = [string]$baseline.displayName Version = [string]$baseline.version Description = [string]$baseline.description SupportedRoles = @($baseline.supportedRoles) ControlCount = [int]$baseline.controlCount } } return @($items) } $resolved = if ($PSCmdlet.ParameterSetName -eq 'Path') { Resolve-HLBaseline -Path $Path } else { Resolve-HLBaseline -Name $Name } if ($IncludeControls) { return $resolved } return [pscustomobject][ordered]@{ Name = [string]$resolved.name DisplayName = [string]$resolved.displayName Version = [string]$resolved.version Description = [string]$resolved.description SupportedRoles = @($resolved.supportedRoles) ControlCount = [int]$resolved.controlCount ControlIds = @($resolved.controls | ForEach-Object { [string]$_.id }) Notes = @($resolved.notes) } } |