Public/Certificates/Get-JIMCertificate.ps1
|
function Get-JIMCertificate { <# .SYNOPSIS Gets trusted certificates from JIM. .DESCRIPTION Retrieves trusted certificate information from JIM's certificate store. Can retrieve all certificates, enabled certificates only, or a specific certificate by ID. .PARAMETER Id The unique identifier (GUID) of a specific certificate to retrieve. .PARAMETER Name Filter certificates by name. Supports wildcards (e.g., "Contoso*"). .PARAMETER EnabledOnly If specified, returns only enabled certificates. .PARAMETER Page Page number for paginated results. Defaults to 1. .PARAMETER PageSize Number of items per page. Defaults to 100. .OUTPUTS PSCustomObject representing certificate(s). .EXAMPLE Get-JIMCertificate Gets all certificates. .EXAMPLE Get-JIMCertificate -Name "Contoso*" Gets all certificates with names starting with "Contoso". .EXAMPLE Get-JIMCertificate -EnabledOnly Gets only enabled certificates. .EXAMPLE Get-JIMCertificate -Id "12345678-1234-1234-1234-123456789abc" Gets a specific certificate by ID. .LINK Add-JIMCertificate Set-JIMCertificate Remove-JIMCertificate Test-JIMCertificate Export-JIMCertificate #> [CmdletBinding(DefaultParameterSetName = 'List')] [OutputType([PSCustomObject])] param( [Parameter(Mandatory, ParameterSetName = 'ById', ValueFromPipelineByPropertyName)] [Guid]$Id, [Parameter(ParameterSetName = 'List')] [Parameter(ParameterSetName = 'Enabled')] [SupportsWildcards()] [string]$Name, [Parameter(ParameterSetName = 'Enabled')] [switch]$EnabledOnly, [Parameter(ParameterSetName = 'List')] [ValidateRange(1, [int]::MaxValue)] [int]$Page = 1, [Parameter(ParameterSetName = 'List')] [ValidateRange(1, 1000)] [int]$PageSize = 100 ) process { switch ($PSCmdlet.ParameterSetName) { 'ById' { Write-Verbose "Getting certificate with ID: $Id" $result = Invoke-JIMApi -Endpoint "/api/v1/certificates/$Id" $result } 'Enabled' { Write-Verbose "Getting enabled certificates" $response = Invoke-JIMApi -Endpoint "/api/v1/certificates/enabled" # Filter by name if specified if ($Name) { Write-Verbose "Filtering by name pattern: $Name" $response = $response | Where-Object { $_.name -like $Name } } # Output each certificate individually for pipeline support foreach ($cert in $response) { $cert } } 'List' { Write-Verbose "Getting all certificates" $queryParams = @( "page=$Page", "pageSize=$PageSize" ) $queryString = $queryParams -join '&' $response = Invoke-JIMApi -Endpoint "/api/v1/certificates?$queryString" # Handle paginated response $certs = if ($response.items) { $response.items } else { $response } # Filter by name if specified if ($Name) { Write-Verbose "Filtering by name pattern: $Name" $certs = $certs | Where-Object { $_.name -like $Name } } # Output each certificate individually for pipeline support foreach ($cert in $certs) { $cert } } } } } |