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 $AttribParams = @{ Country = 'DE' State = 'BW' City = 'Karlsruhe' Organization ='AwesomeIT' OrganizationalUnitName ='PSCredentialStore' CommonName ='MyPrivateCert' } New-CSCertAttribute @AttribParams #> [CmdletBinding()] [Diagnostics.CodeAnalysis.SuppressMessageAttribute( 'PSUseShouldProcessForStateChangingFunctions', '', Justification = 'Returns a new object and does not change data' )] [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 {} }