免責事項:これは英文の記事「Configuring NSX-T opaque network as a VM port group with PowerCLI(324798)」の日本語訳です。記事はベストエフォートで翻訳を進めているため、ローカライズ化コンテンツは最新情報ではない可能性があります。最新情報は英語版の記事で参照してください。
症状:
NSX-T ベースのオペークネットワークをソースとするポートグループに関連する仮想マシンのネットワーク構成を管理しようとすると、ホスト上でネットワークが見つからないために失敗することがあります。
コマンド例:Get-VM "APP-VM1" | Get-NetworkAdapter | Set-NetworkAdapter -NetworkName “network-name”
エラー例:Set-NetworkAdapter : 22/03/2018 15:56:17 Set-NetworkAdapter The network "network-name" doesn't exist on the host.At line:1 char:38+ ... rkAdapter | Set-NetworkAdapter -NetworkName “network-name”+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : ResourceUnavailable: (Network-name:String) [Set-NetworkAdapter], iError + FullyQualifiedErrorId : Client20_VmHostServiceImpl_TryGetHostNetworkByName_NonexistentNetwork,VMware.VimAutomation.ViCore.Cmdlets.Commands.VirtualDevice.SetNetworkAdapter
VMware NSX-T
現時点では、解決策はありません。
回避策:
この問題を回避するには、オペークネットワーク用の新しいオブジェクトを作成して、仮想マシン上のポートグループ設定を正しく構成する必要があります。
Set-NetworkAdapterOpaqueNetwork 関数はその新しいオブジェクトを作成し、当面の間 Set-NetworkAdapter の代わりに使用します。
function Set-NetworkAdapterOpaqueNetwork {param( [Parameter(Mandatory = $true, ValueFromPipeline = $true, Position = 1)] [VMware.VimAutomation.Types.NetworkAdapter] $NetworkAdapter,
[Parameter(Mandatory = $true, Position = 2)] [string] $OpaqueNetworkName,
[Parameter()] [switch] $Connected,
[Parameter()] [switch] $StartConnected)process { $opaqueNetwork = Get-View -ViewType OpaqueNetwork | ? {$_.Name -eq $OpaqueNetworkName} if (-not $opaqueNetwork) { throw "'$OpaqueNetworkName' network not found." }
$opaqueNetworkBacking = New-Object VMware.Vim.VirtualEthernetCardOpaqueNetworkBackingInfo $opaqueNetworkBacking.OpaqueNetworkId = $opaqueNetwork.Summary.OpaqueNetworkId $opaqueNetworkBacking.OpaqueNetworkType = $opaqueNetwork.Summary.OpaqueNetworkType
$device = $NetworkAdapter.ExtensionData $device.Backing = $opaqueNetworkBacking
if ($StartConnected) { $device.Connectable.StartConnected = $true }
if ($Connected) { $device.Connectable.Connected = $true } $spec = New-Object VMware.Vim.VirtualDeviceConfigSpec $spec.Operation = [VMware.Vim.VirtualDeviceConfigSpecOperation]::edit $spec.Device = $device $configSpec = New-Object VMware.Vim.VirtualMachineConfigSpec $configSpec.DeviceChange = @($spec) $NetworkAdapter.Parent.ExtensionData.ReconfigVM($configSpec)
# Output Get-NetworkAdapter -Id $NetworkAdapter.Id }}
コマンド例:
Get-VM "APP-VM1" | Get-NetworkAdapter | Set-NetworkAdapterOpaqueNetwork -OpaqueNetworkName "network-name"