Windows Server 2012 R2 では、仮想スイッチを PowerShell で作る場合、Get-NetAdapter を New-VMSwitch にリダイレクトできていましたが、Windows Server 2016 では同様なリダイレクトが出来ないようになっています。
PS C:\> Get-NetAdapter Name InterfaceDescription ifIndex Status MacAddress LinkSpeed ---- -------------------- ------- ------ ---------- --------- イーサネット 3 Intel(R) Ethernet Server Adapter I...#3 2 Disconnected 00-1B-21-A6-6D-FF 0 bps イーサネット 2 Intel(R) Ethernet Server Adapter I...#2 6 Up 00-1B-21-A6-6D-FE 1 Gbps イーサネット 4 Intel(R) Ethernet Server Adapter I...#4 5 Up 00-1B-21-A6-6D-FD 1 Gbps イーサネット Intel(R) Ethernet Server Adapter I34... 8 Up 00-1B-21-A6-6D-FC 1 Gbps PS C:\> Get-NetAdapter | ? MacAddress -eq "00-1B-21-A6-6D-FD" | New-VMSwitch -AllowManagementOS:$False -Name "Test-Switch" New-VMSwitch : パラメーター 'ComputerName の引数を確認できません。引数が null または空です。null または空でない引数を指定して、コ マンドを再度実行してください。 発生場所 行:1 文字:58 + ... A6-6D-FD" | New-VMSwitch -AllowManagementOS:$False -Name "Test-Switch ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidData: (MSFT_NetAdapter...Name = "wsv12"):PSObject) [New-VMSwitch]、ParameterBindingValidatio nException + FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.HyperV.PowerShell.Commands.NewVMSwitch PS C:\> |
Windows Server 2016 の New-VMSwitch の物理 NIC 特定は、-ComputerName localhost を明示的に指定するか、-NetAdapterName で Name を指定する必要があります。
-ComputerName localhost を明示的に指定するのならこんな感じ
Get-NetAdapter | ? MacAddress -eq "00-1B-21-A6-6D-FD" | New-VMSwitch -ComputerName localhost -AllowManagementOS:$False -Name "Test-Switch" |
-NetAdapterName で Name を指定する場合
# ターゲット NIC(MAC Address 使っていますが、ifIndex でも OK) $TergetNIC = Get-NetAdapter | ? MacAddress -eq "00-1B-21-A6-6D-FD" # ターゲット NIC の名前 $TergetNICName = $TergetNIC.Name # NIC 名を指定して 仮想 SW 作成する場合 New-VMSwitch -NetAdapterName $TergetNICName -AllowManagementOS:$False -Name "Test-Switch" |
ワンライナーで書くとこんな感じです
Get-NetAdapter | ? MacAddress -eq "00-1B-21-A6-6D-FD" | % {New-VMSwitch -NetAdapterName $_.Name -AllowManagementOS:$False -Name "Test-Switch"} |
複数 NIC を持っている場合は、NIC 名を変更して管理する事が多いので、変更後の NIC 名を使用すると良いかもしれません。
# NIC 名設定 Get-NetAdapter | ? MacAddress -eq "00-1B-21-A6-6D-FD" | Rename-NetAdapter -NewName "Test-NIC" # NIC 名を指定して仮想スイッチ作成 New-VMSwitch -NetAdapterName "Test-NIC" -AllowManagementOS:$False -Name "Test-Switch" |
Copyright © MURA All rights reserved.