2010年6月13日日曜日

◆ネットワークカードを設定する

Win32_NetworkAdapterConfiguration
このWMIクラスを使うと一通りの設定ができる。(当然情報も取得できる)
Set-PSDebug -Strict
$description = "Realtek RTL8168C"
$staticIP = "192.168.0.11"
$subnetMask = "255.255.255.0"
$gateway = "192.168.0.1"
$DNS = "192.168.0.91","192.168.0.92"
 
$adapter = gwmi Win32_NetworkAdapterConfiguration |
?{$_.description -match $description} #こっちのほうが良いかも ?{$_.IPEnabled -eq $true}
$adapter.EnableStatic($staticIP,$subnetMask)
$adapter.SetGateways($gateway,[UInt16]1)
$adapter.SetDNSServerSearchOrder($DNS)
Start-Sleep -Seconds 5
 
ipconfig
Read-Host "静的IPを設定しました(192.168.0.11)"

ネットワークカードが1枚なら「$_.IPEnabled -eq $true」で良さげだが、特定のカードの設定をするのであれば、
Descriptionで抽出する必要がありそう。

DHCPの設定にするには、
$adapter.EnableDHCP()
DNSを自動にするには、
ネットワーク アダプタに対する DNS 動的更新の変更
$adapter.SetDynamicDNSRegistration($True,$False)

と思ったのだがうまくいかない・・・。
引数の組み合わせもぜんぶ試してみたがダメ。
どうもこのメソッドじゃなさげ。
で、ネットをさまようこと1時間。
やっと見つけた。
Hey, Scripting Guy!
(スクリプトの総本山、探しにくいのがたまにきず)

ん~、空の配列にすれば良いだけかぁ。
ある意味直観的?
以下の感じでOK。

$adapter.EnableDHCP()
#$adapter.SetDynamicDNSRegistration($True,$False) 
$adapter.SetDNSServerSearchOrder(@())
Start-Sleep -Seconds 5
 
ipconfig
Read-Host "DHCPを有効にしました"

0 件のコメント:

コメントを投稿