public/Remove-CACertificate.ps1
function Remove-CACertificate { <# .SYNOPSIS Remove certificate/request from certificate authority. .DESCRIPTION Return list of removed certificates/requests. .PARAMETER State State of certificate/request (revoked, expired, denied, failed). .PARAMETER Date Date to get certificate up-to. Default is today. .EXAMPLE Remove-CACertificate -State 'Revoked'; .EXAMPLE Remove-CACertificate -State 'Revoked' -Date (Get-Date).AddDays(-30); #> [cmdletbinding()] [OutputType([System.Collections.ArrayList])] param ( # State of certificate/request (revoked, expired, denied, failed). [Parameter(Mandatory = $false)] [ValidateSet('Revoked', 'Expired', 'Denied', 'Failed')] [string]$State, # Date to remove certificate up-to. Default is today. [Parameter(Mandatory = $false, ValueFromPipelineByPropertyName = $true)] [ValidateScript({ $_ -le (Get-Date) })] [DateTime]$Date = (Get-Date), # Confirm the action. [Parameter(Mandatory = $false)] [switch]$Confirm = $true ) BEGIN { # Write to log. $customProgress = Write-CustomProgress -Activity $MyInvocation.MyCommand.Name -CurrentOperation 'Removing certificates/requests from certificate authority'; # Object array for the result. $result = New-Object System.Collections.ArrayList; # Ask user to confirm. if ($true -eq $Confirm) { # Get user input. $userInput = Get-UserInput -Question 'Do you want to continue with removing certificate/requests in the AD CS? (Answer: Yes or No)' -Options 'Yes', 'No'; # If the user input is not 'Yes'. if ($userInput -ne 'Yes') { # Write to log. Write-CustomLog -Message 'User did not confirm the action' -Level Verbose; # Exit script. exit 1; } } } PROCESS { # If date is set. if ($PSBoundParameters.ContainsKey('Date')) { # If state is revoked. if ($State -eq 'Revoked') { # Get revoked certificates. $result = Remove-CACertificateRevoked -Date $Date; } # If state is expired. elseif ($State -eq 'Expired') { # Get expired certificates. $result = Remove-CACertificateExpired -Date $Date; } # If state is denied. elseif ($State -eq 'Denied') { # Get denied requests. $result = Remove-CACertificateRequestDenied -Date $Date; } # If state is failed. elseif ($State -eq 'Failed') { # Get failed requests. $result = Remove-CACertificateRequestFailed -Date $Date; } # Else use default. else { # Get certificates. $result += [PSCustomObject]@{ Revoked = Remove-CACertificateRevoked -Date $Date; Expired = Remove-CACertificateExpired -Date $Date; Denied = Remove-CACertificateRequestDenied -Date $Date; Failed = Remove-CACertificateRequestFailed -Date $Date; }; } } # Else use default. else { # If state is revoked. if ($State -eq 'Revoked') { # Get revoked certificates. $result = Remove-CACertificateRevoked; } # If state is expired. elseif ($State -eq 'Expired') { # Get expired certificates. $result = Remove-CACertificateExpired; } # If state is denied. elseif ($State -eq 'Denied') { # Get denied requests. $result = Remove-CACertificateRequestDenied; } # If state is failed. elseif ($State -eq 'Failed') { # Get failed requests. $result = Remove-CACertificateRequestFailed; } # Else use default. else { # Get certificates. $result += [PSCustomObject]@{ Revoked = Remove-CACertificateRevoked; Expired = Remove-CACertificateExpired; Denied = Remove-CACertificateRequestDenied; Failed = Remove-CACertificateRequestFailed; }; } } } END { # Write to log. Write-CustomProgress @customProgress; # Return the result. return $result; } } |