Отключите сетевую карту на выключенной виртуальной машине

Отключите сетевую карту на выключенной виртуальной машине

Я использую ESXi 6.0 и PowerCLI. Я создал клон производственной виртуальной машины:

$Source_VM = Get-VM -Name "MyProductionServer"
$Target_VMHost = Get-VMHost -VM $Source_VM
$Cloned_VM = (New-VM -Name "MyPreProdServer" -VM $Source_VM -VMHost $Target_VMHost)

У моего MyProductionServer установлен статический IP-адрес на стороне ОС. Если я запущу $Cloned_VM, у меня будет дублирующийся IP-адрес в той же подсети. Я хотел бы ОТКЛЮЧИТЬ NIC на клонированной VM перед запуском этой.

Вот что я обнаружил:

1) На включенной виртуальной машине:

Get-NetworkAdapter -VM $Cloned_VM | Set-NetworkAdapter -Connected:$false -StartConnected:$false -Confirm:$false

Это работает, но я не могу этого сделать из-за состояния клонированной виртуальной машины.

2) Удалите сетевую карту из виртуальной машины:

$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$spec.deviceChange = New-Object VMware.Vim.VirtualDeviceConfigSpec
$spec.deviceChange[0].Operation = "Remove"
$spec.DeviceChange[0].Device = $Cloned_VM.ExtensionData.Config.Hardware.Device | ?{$_.DeviceInfo.Label -eq "Network adapter 1"}
$Cloned_VM.ExtensionData.ReconfigVM_Task($spec)

Источник:https://communities.vmware.com/thread/454525

Это тоже работает, но это не совсем то, что мне бы хотелось.

Я хотел бы ОТКЛЮЧИТЬ текущую сетевую карту, чтобы загрузить клонированную виртуальную машину, изменив IP-адрес, а затем ПОДКЛЮЧИТЬ сетевую карту (+ перезагрузка), чтобы клонированная виртуальная машина работала с другим IP-адресом.

Проще говоря, я хотел бы сделать 1) на выключенной виртуальной машине. Это возможно?

решение1

Я проверил это в тестовой среде, и это работает.

# Saving the NIC
$Saved_NIC = $Cloned_VM.ExtensionData.Config.Hardware.Device | ?{$_.DeviceInfo.Label -eq "Network adapter 1"}

# Removing the NIC
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$spec.deviceChange = New-Object VMware.Vim.VirtualDeviceConfigSpec
$spec.deviceChange[0].Operation = "Remove"
$spec.DeviceChange[0].Device = $Saved_NIC
$Cloned_VM.ExtensionData.ReconfigVM_Task($spec)

# Modifying my VM (boot + launch script + poweroff)

# Adding the NIC
$spec = New-Object VMware.Vim.VirtualMachineConfigSpec
$spec.deviceChange = New-Object VMware.Vim.VirtualDeviceConfigSpec
$spec.deviceChange[0].Operation = "Add"
$spec.DeviceChange[0].Device = $Saved_NIC
$Cloned_VM.ExtensionData.ReconfigVM_Task($spec)

# Boot again my VM and test to reach the internet: WORKING!
Start-VM -VM $Cloned_VM

Вроде бы все в порядке, посмотрим позже в Pre-Prod-среде :)

Связанный контент