public/Get-FreeNasCertificate.ps1

<#
      .SYNOPSIS
      This function return Certificate created on your FreeNas Server
      .DESCRIPTION
      This function return Certificate created on your FreeNas Server
      .EXAMPLE
       PS C:\> Get-FreeNasCertificate

        Name : FreeNas
        Id : 1
        CSR :
        DN : /C=US/ST=US/L=New York/O=JM2K69/CN=FreeNas/emailAddress=Freenas@JM2K69.it
        Certificate : -----BEGIN CERTIFICATE-----
                          MIIDhDCCAmygAwIBAgIEAMoKjzANBgkqhkiG9w0BAQsFADBzMQswCQYDVQQGEwJV
                          UzELMAkGA1UE..........
                          -----END CERTIFICATE-----
        Chain : False
        City : New York
        Common : FreeNas
        Country : US
        Disgest Algorithm : SHA256
        Email : Freenas@JM2K69.loc
        From : Thu Oct 24 05:37:47 2019
        Issuer : CAInternal
        Key Lenght : 2048
        Lifetime : 3650
        Organization : JM2K69
        PrivateKey : -----BEGIN PRIVATE KEY-----
                            MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCzO8EZwwvleN32
                            XO/mrAYrxfhDpjY+..........
                            -----END PRIVATE KEY-----

        Serial : 13240975
        State : US
        Type : 16
        Type CSR : False
        Type CSR existing : False
        Type Internal : True
        Valid until : Sun Oct 21 05:37:47 2029
        .NOTES
      This command allow to find all certificate created on your FreeNas or TrueNas server

      .FUNCTIONALITY
      Use this command when you want to enable Https on your FreeNas or TrueNas server
      #>


function Get-FreeNasCertificate
{
    [CmdletBinding()]
    [Alias()]
    Param
    ()


    Begin
    { }
    Process
    {
        $Uri = "/api/v1.0/system/certificate/"

        $result = Invoke-FreeNasRestMethod -Uri $Uri -Method Get

        $Certificate = New-Object System.Collections.ArrayList

        if ($null -eq $result.count)
        {

            $temp = New-Object System.Object
            $temp | Add-Member -MemberType NoteProperty -Name "Name" -Value "$($result.cert_name)"
            $temp | Add-Member -MemberType NoteProperty -Name "Id" -Value "$($result.id)"
            $temp | Add-Member -MemberType NoteProperty -Name "CSR" -Value "$($result.cert_CSR)"
            $temp | Add-Member -MemberType NoteProperty -Name "DN" -Value "$($result.cert_DN)"
            $temp | Add-Member -MemberType NoteProperty -Name "Certificate" -Value "$($result.cert_certificate)"
            $temp | Add-Member -MemberType NoteProperty -Name "Chain" -Value "$($result.cert_chain)"
            $temp | Add-Member -MemberType NoteProperty -Name "City" -Value "$($result.cert_city)"
            $temp | Add-Member -MemberType NoteProperty -Name "Common" -Value "$($result.cert_common)"
            $temp | Add-Member -MemberType NoteProperty -Name "Country" -Value "$($result.cert_country)"
            $temp | Add-Member -MemberType NoteProperty -Name "Disgest Algorithm" -Value "$($result.cert_digest_algorithm)"
            $temp | Add-Member -MemberType NoteProperty -Name "Email" -Value "$($result.cert_email)"
            $temp | Add-Member -MemberType NoteProperty -Name "From" -Value "$($result.cert_from)"
            $temp | Add-Member -MemberType NoteProperty -Name "Issuer" -Value "$($result.cert_issuer)"
            $temp | Add-Member -MemberType NoteProperty -Name "Key Lenght" -Value "$($result.cert_key_length)"
            $temp | Add-Member -MemberType NoteProperty -Name "Lifetime" -Value "$($result.cert_lifetime)"
            $temp | Add-Member -MemberType NoteProperty -Name "Organization" -Value "$($result.cert_organization)"
            $temp | Add-Member -MemberType NoteProperty -Name "PrivateKey" -Value "$($result.cert_privatekey)"
            $temp | Add-Member -MemberType NoteProperty -Name "Serial" -Value "$($result.cert_serial)"
            $temp | Add-Member -MemberType NoteProperty -Name "State" -Value "$($result.cert_state)"
            $temp | Add-Member -MemberType NoteProperty -Name "Type" -Value "$($result.cert_type)"
            $temp | Add-Member -MemberType NoteProperty -Name "Type CSR" -Value "$($result.cert_type_CSR)"
            $temp | Add-Member -MemberType NoteProperty -Name "Type CSR existing" -Value "$($result.cert_type_existing)"
            $temp | Add-Member -MemberType NoteProperty -Name "Type Internal" -Value "$($result.cert_type_internal)"
            $temp | Add-Member -MemberType NoteProperty -Name "Valid until" -Value "$($result.cert_until)"
            $Certificate.Add($temp) | Out-Null


        }
        else
        {

            for ($i = 0; $i -lt $result.Count; $i++)
            {

                $temp = New-Object System.Object
                $temp | Add-Member -MemberType NoteProperty -Name "Name" -Value "$($result[$i].cert_name)"
                $temp | Add-Member -MemberType NoteProperty -Name "Id" -Value "$($result[$i].id)"
                $temp | Add-Member -MemberType NoteProperty -Name "CSR" -Value "$($result[$i].cert_CSR)"
                $temp | Add-Member -MemberType NoteProperty -Name "DN" -Value "$($result[$i].cert_DN)"
                $temp | Add-Member -MemberType NoteProperty -Name "Certificate" -Value "$($result[$i].cert_certificate)"
                $temp | Add-Member -MemberType NoteProperty -Name "Chain" -Value "$($result[$i].cert_chain)"
                $temp | Add-Member -MemberType NoteProperty -Name "City" -Value "$($result[$i].cert_city)"
                $temp | Add-Member -MemberType NoteProperty -Name "Common" -Value "$($result[$i].cert_common)"
                $temp | Add-Member -MemberType NoteProperty -Name "Country" -Value "$($result[$i].cert_country)"
                $temp | Add-Member -MemberType NoteProperty -Name "Disgest Algorithm" -Value "$($result[$i].cert_digest_algorithm)"
                $temp | Add-Member -MemberType NoteProperty -Name "Email" -Value "$($result[$i].cert_email)"
                $temp | Add-Member -MemberType NoteProperty -Name "From" -Value "$($result[$i].cert_from)"
                $temp | Add-Member -MemberType NoteProperty -Name "Issuer" -Value "$($result[$i].cert_issuer)"
                $temp | Add-Member -MemberType NoteProperty -Name "Key Lenght" -Value "$($result[$i].cert_key_length)"
                $temp | Add-Member -MemberType NoteProperty -Name "Lifetime" -Value "$($result[$i].cert_lifetime)"
                $temp | Add-Member -MemberType NoteProperty -Name "Organization" -Value "$($result[$i].cert_organization)"
                $temp | Add-Member -MemberType NoteProperty -Name "PrivateKey" -Value "$($result[$i].cert_privatekey)"
                $temp | Add-Member -MemberType NoteProperty -Name "Serial" -Value "$($result[$i].cert_serial)"
                $temp | Add-Member -MemberType NoteProperty -Name "State" -Value "$($result[$i].cert_state)"
                $temp | Add-Member -MemberType NoteProperty -Name "Type" -Value "$($result[$i].cert_type)"
                $temp | Add-Member -MemberType NoteProperty -Name "Type CSR" -Value "$($result[$i].cert_type_CSR)"
                $temp | Add-Member -MemberType NoteProperty -Name "Type CSR existing" -Value "$($result[$i].cert_type_existing)"
                $temp | Add-Member -MemberType NoteProperty -Name "Type Internal" -Value "$($result[$i].cert_type_internal)"
                $temp | Add-Member -MemberType NoteProperty -Name "Valid until" -Value "$($result[$i].cert_until)"
                $Certificate.Add($temp) | Out-Null
            }

        }
        return $Certificate



    }
    End
    {
    }
}