Windowsは、接続されているNICに「ローカル エリア接続 xx」という名前を付けて管理をしますが、この名前付けはランダムであり、同じ構成のマシンを同時にインストールしてても違う名前が付いたりします。
通常は、インストール中に接続されている物理ポートに応じて名前を付けたり並び替えたりするのですが、複数のNICを有しているサーバ機では結構その作業が面倒です。Linuxの様にMACアドレスで特定するにも、インストール前に特定するのは難しいです。そこで、PCIバスの番号や機能などによりポートを特定して並び替えるPowerShellスクリプトを作ってみました。(実行には管理者権限で実行する必要があります)
function rename-nic($i, $j ,$k ,$x) {
$newname = "$x"
$location = "PCI bus $i, device $j, function $k"
$location_jp = "PCI バス $i, デバイス $j, 機能 $k"
$drvinfo = (Get-WmiObject Win32_PnPSignedDriver | Where-Object {$_.Location -eq $location -or $_.Location -eq $location_jp}).DeviceID
$nic = Get-WmiObject Win32_NetworkAdapter | Where-Object {$_.PNPDeviceID -eq $drvinfo}
$oldname = $nic.NetConnectionID
if ($oldname -eq "$newname") {
write-host "既に指定された名前になっています"
}
elseif ($newname -eq '') {
write-host "新しい名前を指定して下さい"
}
elseif ($oldname -eq '') {
write-host "指定されたバスにNICが見つかりません"
}
else {
write-host "NIC名変更: $oldname => $newname"
$nic.NetConnectionID = $newname
$nic.Put()
}
}
$model = (Get-WmiObject Win32_ComputerSystem).Model
if ($model -eq "PRIMERGY RX200 S6 ") {
write-host "Fujitsu PRIMERGY RX200 S6のNIC名を変更を実行します"
rename-nic "1" "0" "0" "ローカルエリア接続1"
rename-nic "1" "0" "1" "ローカルエリア接続2"
rename-nic "4" "0" "0" "ローカルエリア接続3"
rename-nic "4" "0" "1" "ローカルエリア接続4"
rename-nic "4" "0" "2" "ローカルエリア接続5"
rename-nic "4" "0" "3" "ローカルエリア接続6"
rename-nic "3" "0" "3" "ローカルエリア接続7"
rename-nic "3" "0" "2" "ローカルエリア接続8"
rename-nic "3" "0" "1" "ローカルエリア接続9"
rename-nic "3" "0" "0" "ローカルエリア接続10"
}
サンプルとして、富士通の1UサーバにQUADポートの増設NICを2枚刺した物をベースに作りました。(PCIバスの3番と4番は片方がLPになっていて指す方向が逆なので機能番号が逆順になっています)
各マシンやNICごとに、rename-nic関数の引数を変えて行けば使い回しできそうですね。

