public/Publish-CACrl.ps1

function Publish-CACrl
{
    <#
    .SYNOPSIS
        Publish the certificate revocation list.
    .DESCRIPTION
        Return nothing.
    .EXAMPLE
        Publish-CACrl;
    #>

    [cmdletbinding()]
    [OutputType([void])]
    param
    (
    )

    BEGIN
    {
        # Write to log.
        $customProgress = Write-CustomProgress -Activity $MyInvocation.MyCommand.Name -CurrentOperation 'Publish certificate authority CRL';

        # Get the common name of the certificate authority.
        $caCommonName = Get-CACommonName;

        # Get hostname of the certificate authority.
        $hostname = $env:COMPUTERNAME

        # Construct CA config string.
        $caConfigString = ('{0}\{1}' -f $hostname, $caCommonName);
    }
    PROCESS
    {
        # Try to create a new instance of ICertAdmin2 interface.
        try
        {
            # Write to log.
            Write-CustomLog -Message ('Trying to instantiate ICertAdmin2 interface') -Level Verbose;

            # Instantiate ICertAdmin2 interface.
            $caAdmin = New-Object -ComObject CertificateAuthority.Admin;

            # Write to log.
            Write-CustomLog -Message ('Successfully instantiate ICertAdmin2 interface') -Level Verbose;
        }
        # Something went wrong.
        catch
        {
            # Throw exception.
            throw ('Failed to instantiate ICertAdmin2 interface. {0}' -f $_.Exception.Message);
        }

        # Try to publish CRL.
        try
        {
            # Write to log.
            Write-CustomLog -Message 'Trying to publish CRL' -Level Verbose;

            # Publish the CRL.
            $null = $caAdmin.PublishCRL($caConfigString, 0);

            # Write to log.
            Write-CustomLog -Message 'Successfully published the CRL' -Level Verbose;

            # Write to event log.
            Write-CustomEventLog -EventId 61;
        }
        catch
        {
            # Write to event log.
            Write-CustomEventLog -EventId 63;

            # Write to log.
            Write-CustomLog -Message ('Failed to publish CRL. Error: {0}' -f $_.Exception.Message) -Level Error;

            # Exit script.
            exit 1;
        }
    }
    END
    {
        # Write to log.
        Write-CustomProgress @customProgress;
    }
}