Using Powershell to Update DNS Records on GoDaddy API
I was recently working on using the GoDaddy API in lieu of using dynamicDNS to keep my lab IP up to date. I stumbled across a post on Stack Overflow where someone had already started some work on this, but had not quite got it working.
I was able to take what they had provided, make a couple of changes, and get it working. It might help you out to!
Enjoy!
Comments
- Anonymous
December 03, 2016
please share your changes. I found the same post but haven't figured it out. - Anonymous
December 03, 2016
What did you do to figure it out? I still get the 422...- Anonymous
January 14, 2017
Looks like they stopped accepting the TTL value (at least for me) in the $Request. I am posting an update now.Thanks!
- Anonymous
- Anonymous
May 28, 2018
I struggles with this for a minute also. I was able to get it to work with the following$apiKey = 'YOUR API KEY'$apiSecret = 'YOUR API SECRET'$domain = 'YOUR DOMAIN NAME'#ENTER THE NAME OF THE RECORD YOU WISH TO UPDATE#$name = '@'$Headers = @{}$Headers["Authorization"] = 'sso-key ' + $apiKey + ':' + $apiSecret$result = Invoke-WebRequest https://api.godaddy.com/v1/domains/$domain/records/A/$name -method get -headers $headers$content = ConvertFrom-Json $result.content$dnsIp = $content.data$currentIp = Invoke-RestMethod http://ipinfo.io/json | Select -exp ip#THIS SECTION CHECKS THE CURRENT IP ADDRESS AGAINST THE PULL AND WILL UPDATE IF NOT CORRECT#if ( $currentIp -ne $dnsIp) { #$Request = @{ttl=600;data=$currentIp } $JSON = ConvertTo-Json @(@{data=$currentIp;ttl=600}) Invoke-WebRequest https://api.godaddy.com/v1/domains/$domain/records/A/$name -method put -headers $headers -Body $json -ContentType "application/json" }#SHOWS RESULTS OF THE HEADER PULLInvoke-WebRequest https://api.godaddy.com/v1/domains/$domain/records/ -Method Get -Headers $Headers | ConvertFrom-Json