function Register-FQDN
{
$FQDN = $args[0]
echo "`n Creating a new identifier for $FQDN ..."
echo "`n $FQDN"
New-ACMEIdentifier -Dns $FQDN -Alias $FQDN | select status, Expires
Get-ACMEIdentifier -IdentifierRef $FQDN
echo "`n Completing the challenge for the new identifier for $FQDN ..."
$challenge = Complete-ACMEChallenge $FQDN -Verbose -Regenerate -ChallengeType dns-01 -Handler manual -HandlerParameters @{ WebSiteRef = $FQDN } #| select Identifier, status, Expires *>&1 >> $acmelog
$rec = ($challenge.Challenges | Where-Object {$_.type -eq "dns-01"}).challenge.recordname
$data = ($challenge.Challenges | Where-Object {$_.type -eq "dns-01"}).challenge.recordvalue
Store-DNS $rec $data
echo "`n Submitting the new identifier for $FQDN ..."
Submit-ACMEChallenge $FQDN -ChallengeType dns-01 | select Identifier, status, Expires *>&1 >> $acmelog
do
{
$auth = ((Update-ACMEIdentifier $FQDN -ChallengeType dns-01).Challenges | Where-Object {$_.Type -eq "dns-01"}).status
if($auth -eq "invalid") {break}
echo "`n Waiting for a valid authorization ... Current status is $auth"
Start-Sleep -s 3
}until ($auth -eq "valid")
Update-ACMEIdentifier $FQDN | select Identifier, status, Expires *>&1 >> $acmelog
}
function Find-Zone
{
$z = $args[0]
$za = $z.Split('.')
$c = 0
$zt = $za[$c..$za.Length]
while ((Get-DnsServerZone -ComputerName $dnsserver | Where-Object {$_.ZoneName -like '*'+($zt -join '.') } | Measure-Object).Count -ne 1)
{
$c += 1
$zt = $za[$c..$za.Length]
}
return ($zt -join '.'),((Compare-Object $za $zt -PassThru) -join '.')
}
function Store-DNS
{
$rec = $args[0]
$data = $args[1]
$zones = Find-Zone $rec
$zone = $zones[0]
$rr = $zones[1]
# Ensure that the old record isn't there still
Remove-DnsServerResourceRecord -ComputerName $dnsserver -ZoneName $zone -Name $rr -RRType Txt
Add-DnsServerResourceRecord -ComputerName $dnsserver -ZoneName $zone -Name $rr -Txt -DescriptiveText $data
}
#NOTE: Uncoment and edit the lines below
#---------------------------------------
$dnsserver = "server02"
Complete-ACMEChallenge -VaultProfile my-vault -IdentifierRef my-
domain-com -ChallengeType http-01 -Handler manual -HandlerParameters
@{WriteOutPath = "c:\Users\me\inst.txt&"}