DSCResources/CertificateRequests/CertificateRequests.schema.psm1
configuration CertificateRequests { param ( [Parameter(Mandatory = $true)] [hashtable[]] $Requests ) <# CertReq [String] #ResourceName { FriendlyName = [string] Subject = [string] [AutoRenew = [bool]] [CARootName = [string]] [CAServerFQDN = [string]] [CAType = [string]] [CepURL = [string]] [CertificateTemplate = [string]] [CesURL = [string]] [Credential = [PSCredential]] [DependsOn = [string[]]] [Exportable = [bool]] [KeyLength = [string]{ 1024 | 192 | 2048 | 224 | 256 | 384 | 4096 | 521 | 8192 }] [KeyType = [string]{ ECDH | RSA }] [KeyUsage = [string]] [OID = [string]] [ProviderName = [string]] [PsDscRunAsCredential = [PSCredential]] [RequestType = [string]{ CMC | PKCS10 }] [SubjectAltName = [string]] [UseMachineContext = [bool]] } #> Import-DscResource -Module PSDesiredStateConfiguration Import-DscResource -Module CertificateDsc $waitForAdcs = [System.Collections.Generic.List[string]]::new() foreach ($request in $Requests) { if ($null -ne $request.CAServerFqdn -and -not $waitForAdcs.Contains($request.CAServerFqdn)) { WaitForCertificateServices "WaitForADCS$($request.CARootName -replace '[\s(){}/\\:=-]', '_')" { RetryIntervalSeconds = 20 RetryCount = 5 CAServerFQDN = $request.CAServerFqdn CARootName = $request.CARootName } $null = $waitForAdcs.Add($request.CAServerFqdn) } $request.DependsOn = "[WaitForCertificateServices]WaitForADCS$($request.CARootName -replace '[\s(){}/\\:=-]', '_')" $executionName = "req_$($request.FriendlyName)_$($request.Subject)" -replace '[\s(){}/\\:=\.-]', '_' (Get-DscSplattedResource -ResourceName CertReq -ExecutionName $executionName -Properties $request -NoInvoke).Invoke($request) } } |