Certificate/New-CSCertAttribute.ps1

function New-CSCertAttribute {
    <#
    .SYNOPSIS
        Creates required data for a certificate signing request.
 
    .DESCRIPTION
        Defines the certificate related properties for an upcoming New-PfxCertificate execution.
 
    .PARAMETER Country
        County code like EN, DE, IT, FR...
 
    .PARAMETER State
        Certificate state value.
 
    .PARAMETER City
        Certificate city value.
 
    .PARAMETER Organization
        Certificate organization value.
 
    .PARAMETER OrganizationalUnitName
        Certificate OrganizationalUnitName value.
 
    .PARAMETER CommonName
        The certificate common name.
 
    .PARAMETER Days
        The validation time itself.
 
    .INPUTS
        [None]
 
    .OUTPUTS
        [PSCredentialStore.Certificate.CSRDetails]
 
    .EXAMPLE
        New-CSCertAttribute -Country 'DE' -State 'BW' -City 'Karlsruhe' -Organization 'AwesomeIT' -OrganizationalUnitName '' -CommonName 'MyPrivateCert'
 
    .NOTES
        - File Name : New-CSCertAttribute.ps1
        - Author : Marco Blessing - marco.blessing@googlemail.com
        - Requires :
 
    .LINK
        https://github.com/OCram85/PSCredentialStore
    #>

    [CmdletBinding()]
    [OutputType('PSCredentialStore.Certificate.Attribute')]
    param(
        [Parameter(Mandatory = $true)]
        [ValidateLength(2, 2)]
        [ValidateNotNull()]
        [string]$Country,

        [Parameter(Mandatory = $true)]
        [ValidateNotNull()]
        [string]$State,

        [Parameter(Mandatory = $true)]
        [ValidateNotNull()]
        [string]$City,

        [Parameter(Mandatory = $true)]
        [ValidateNotNull()]
        [string]$Organization,

        [Parameter(Mandatory = $true)]
        [ValidateNotNull()]
        [string]$OrganizationalUnitName,

        [Parameter(Mandatory = $true)]
        [ValidateNotNull()]
        [string]$CommonName,

        [Parameter(Mandatory = $false)]
        [ValidateNotNull()]
        [int]$Days = 365
    )
    begin {

    }
    process {
        return [PSCustomObject]@{
            PSTypeName = 'PSCredentialStore.Certificate.Attribute'
            Subject    = [PSCustomObject]@{
                PSTypeName             = 'PSCredentialStore.Certificate.Attribute.Subject'
                Country                = $Country
                State                  = $State
                City                   = $City
                Organization           = $Organization
                OrganizationalUnitName = $OrganizationalUnitName
                CommonName             = $CommonName
            }
            Days       = $Days
        }
    }
    end {
    }
}