Private/New-TemplateOID.ps1
Function New-TemplateOID { [CmdletBinding(ConfirmImpact = 'Medium')] [OutputType([System.Collections.Hashtable])] Param( $Server, $ConfigNC ) <# OID CN/Name [10000000-99999999].[32 hex characters] OID msPKI-Cert-Template-OID [Forest base OID].[1000000-99999999].[10000000-99999999] <--- second number same as first number in OID name #> do { $OID_Part_1 = Get-Random -Minimum 1000000 -Maximum 99999999 $OID_Part_2 = Get-Random -Minimum 10000000 -Maximum 99999999 $OID_Part_3 = Get-RandomHex -Length 32 $OID_Forest = Get-ADObject -Server $Server ` -Identity "CN=OID,CN=Public Key Services,CN=Services,$ConfigNC" ` -Properties msPKI-Cert-Template-OID | Select-Object -ExpandProperty msPKI-Cert-Template-OID $msPKICertTemplateOID = "$OID_Forest.$OID_Part_1.$OID_Part_2" $Name = "$OID_Part_2.$OID_Part_3" } until (IsUniqueOID -cn $Name -TemplateOID $msPKICertTemplateOID -Server $Server -ConfigNC $ConfigNC) Return @{ TemplateOID = $msPKICertTemplateOID TemplateName = $Name } } |