イベントハンドリングはとりあえずおいといて、スクリプトでDNSのCNAMEを変更する方法を探す。
やっぱりというかなんというかWMIにしっかりと用意されていた。
DNS WMI Classes (Windows)
PowershellはWMIオブジェクトも扱えるので、こんな感じに。
$cnames = gwmi -Class MicrosoftDNS_CNAMEType -Namespace Root\MicrosoftDNS -ComputerName DCコンピュータ名
$cname = $cnames | ? {$_.OwnerName -eq "cname.example.com"}
$cname.Modify($null, "some.example.com.")
特定のCNAMEを表すMicrosoftDNS_CNAMETypeだけすぱっと取得したかったが、全CNAMEを取る方法しか分からなかったので場当たり的にWhere-Objectで絞り込む。とても無駄な感じ。
- CNAMEもAレコードも事前に作成してある前提なので、見つからない場合を考えていない。
- 適切な権限が必要。
環境:
Windows XP Pro SP3 x86
Powershell 1.0
Windows Server 2008 Standard x64
Active Directory
DNS
>> Home