Code:
function Update-StratoDDNS([string]$DomainName, [string]$Password){ $pair = "${DomainName}:${Password}" $bytes = [System.Text.Encoding]::ASCII.GetBytes($pair) $base64 = [System.Convert]::ToBase64String($bytes) $basicAuthValue = "Basic $base64" $headers = @{ Authorization = $basicAuthValue } Invoke-WebRequest -uri "[URL]https://dyndns.strato.com/nic/update?hostname=[/URL]$DomainName" -Headers $headers | Out-File "$PSScriptRoot\REPORT_$DomainName.txt" }
DomainName und Password werden zu einem String zusammengefügt, in bytes encodiert und anschließend nochmals mit Base64 encodiert. Das Ergebnis daraus wird dann in einen HTTP-Header gepackt und an die dyndns-URL gesendet. Die HTTP-Response wird dann anschließend in einer Text-Datei gespeichert, als eine Art Protokoll.
Ein DynDNS-Update kann dann mit einem Einzeiler pro Domain durchgführt werden:
Code:
Update-StratoDDNS -DomainName "domain1.com" -Password "mysecretpassword1" Update-StratoDDNS -DomainName "domain2.net" -Password "mysecretpassword2"
Die Idee zu diesem Script stammt übrigens von Tobias Wust! Den Original-Artikel findet ihr hier: https://wust.me/strato-dyndns-mit-powershell/. Ich habe mir erlaubt, dass Script in eine function zu verpacken und mit Parametern zu versehen.