某PCショップ店員の覚書

勤務中に作成したプログラムやスクリプトのまとめ

f5.si へPowershellからHTTP GETリクエストを投げる方法

身内にDDNSの「f5.si」を利用している人が居るので、その人向けにPowershell上からf5.siへHTTP GETリクエストを投げ、ホスト名を変更する方法を書きます。

# f5.si へHTTP GETリクエストを投げる
# グローバルIPアドレスの取得
$address = (Invoke-WebRequest -Uri "inet-ip.info/ip").Content

# 投げるGETリクエスト先
$url = "https://f5.si/update.php?domain=USERNAME&password=PASSWORD&ip=$address" # ipv4 address

# レスポンス Write-Host $res 等で詳細を表示可能
$res = Invoke-WebRequest $url

# ループさせないのでswitch caseではなくif elseifを利用
if ($res.Content -ne "OK:SUCCESS (good)"){
    if($res.Content -eq "ERROR:100"){
        Write-Warning "パスワードまたはトークンが間違っています"
    }elseif($res.Content -eq "ERROR:110"){
        Write-Warning "ユーザー名が間違っています"
    }elseif($res.Content -eq "ERROR:120"){
        Write-Warning "IPアドレスの形式が不正です"
    }elseif($res.Content -eq "ERROR:200"){
        Write-Warning "[システムエラー]DBサーバーに接続不能です"
    }elseif($res.Content -eq "ERROR:210"){
        Write-Warning "[システムエラー]DNSサーバーに接続不能です"
    }elseif($res.Content -eq "ERROR:300"){
        Write-Warning "[システムエラー]更新確認ができませんでした"
    }elseif($res.Content -eq "ERROR:400"){
        Write-Warning "詳細設定でCNAMEが設定中のためAレコードが利用不可です"
    }else{
        Write-Warning "不明なエラー"
    }
    Write-Warning "エラーが発生しているため、更新ができませんでした。"
    Write-Warning "エラー内容にしたがって該当箇所を修正し、再度スクリプトを実行してください"
}
pause
exit

USERNAMEとPASSWORDを自分の登録情報へ変更すれば問題なく変更できるはずです。
※ f5.siを利用していないのでテストもデバッグもしてません。

DiCE等を利用しないメリットとしては

  • タスクスケジューラに登録すればDiCEより短い間隔で更新の手続きを行える
  • DiCEとf5.si用追加batをダウンロードする必要がない

以上です。