ddo.jpのIPアドレス更新を行うためのスクリプト

タスクに登録することで定期実行可能
※注意:エラー処理&例外処理は行っていません。

###############################################################
## Downloads a HTML Source
###############################################################
function HGet
{
    param(
        $url = (Read-Host "The URL to download")
    )
    [string]$html = ""
    $req = [System.Net.HttpWebRequest]::Create($url)
    $res = $req.GetResponse()
    $enc = [System.Text.Encoding]::GetEncoding($res.CharacterSet)

    if($res.StatusCode -eq 200) {
        $stream = $res.GetResponseStream()
        $sr = New-Object System.IO.StreamReader($stream, $enc)
        $html = $sr.ReadToEnd();
        $sr.Close()
        $stream.Close()
    }
    $res.Close()
    return $html
}

###############################################################################
## ddo.jp のDNS自動更新のためのスクリプト
## IDとPASSは ConvertFrom-SecureString (Get-Credential).Password で取得した文字列を使用する。
###############################################################################

$url = "http://free.ddo.jp/dnsupdate.php"
$dic = @{ }
$dic.dn = "登録したID"
$dic.pw = "登録したPASS"
$dic.ip = "8.8.8.8"

#WAN-IP取得
$html = HGet("http://webpage-utils.appspot.com/ip")

#URL作成
$value = $dic.GetEnumerator() | % { "{0}={1}" -f $_.Name, $_.Value }
$value = $value -join "&"
$url = ("{0}?{1}" -f $url, $value)

#DNSの更新 (GETでアクセスするだけ)
$html = HGet($url)
$html


■参考サイト
Google App Engine で WAN 側 IP アドレスを取得
WebRequest/WebResponseクラスでWebページを取得するには?