9 Replies Latest reply on Aug 7, 2020 2:31 AM by an648

    Creating an isolated network between two virtual machines and facing issue while assigning static IP

    an648 Lurker

      Issue- I was following the KB https://kb.vmware.com/s/article/2043160 and facing issues while assigning static IP to a VM with two network adapters


      Script that I was using -


      $vmNameTemplate = "VM-{0:D3}"


      $cluster = Get-Cluster -Name "Test Cluster"

      $template = Get-Template "New_Template"

      $vmList = @()


      New-VirtualSwitch -VMHost 'esxi3.gsslabs.org' -Name vSwitch8

      New-VirtualPortGroup -Name "Private" -VirtualSwitch vSwitch8 -VLanId 0


      $vmhost = Get-Cluster 'Test Cluster' | Get-VMHost -Name 'esxi3.gsslabs.org'


      $myDatastoreCluster = 'Datastore'


      for ($i = 1; $i –le 2; $i++) {

          $vmName = $vmNameTemplate –f $i

          $vmList += New-VM –Name $vmName -Datastore $myDatastoreCluster -VMHost $vmhost –Template $template




      #Create a custom spec 

      $staticIpList = Import-CSV C:\deploy.csv

            $sCust = @{

               Name = "Win2008r"

               OSType = 'Windows'

               Type = 'Persistent'

               FullName = "Test"

               OrgName = "VMware1"

               NamingScheme = 'VM'

               AutoLogonCount = 1

               ChangeSID = $true

               Confirm = $false

               Workgroup = "VMware"



      New-OSCustomizationSpec @sCust

      $nicMappings = Get-OSCustomizationNicMapping –OSCustomizationSpec Win2008r

      Remove-OSCustomizationNicMapping –OSCustomizationNicMapping $nicMappings

      $specClone = New-OSCustomizationSpec –Spec Win2008r –Type NonPersistent


      for ($i = 0; $i –lt $vmList.Count; $i++) {

      $vm=Get-VM -Name $vmList[$i]

      $ip = $staticIpList[$i].ip

      New-Networkadapter -vm $vmList[$i] -NetworkName "Private" -Type "E1000" -startconnected

      $publicNIC = $vmList[$i] | Get-NetworkAdapter| where {$_.NetworkName -eq "VM Network"}

      $privateNIC = $vmList[$i] | Get-NetworkAdapter| where {$_.NetworkName -eq "Private"}



      New-OSCustomizationNicMapping -OSCustomizationSpec $specClone –IpMode UseDhcp –NetworkAdapterMac $publicNIC.MacAddress

      New-OSCustomizationNicMapping -OSCustomizationSpec $specClone –IpMode UseStaticIP –IpAddress $ip –SubnetMask "" –DefaultGateway "" -Dns "" -NetworkAdapterMac $privateNIC.MacAddress


      $nicMappings = Get-OSCustomizationNicMapping –OSCustomizationSpec $specClone | where {$_.Position –eq 1}

      $nicMappings | Set-OSCustomizationNicMapping –IpMode UseDhcp –NetworkAdapterMac $publicNIC.MacAddress


      $nicMapping = Get-OSCustomizationNicMapping –OSCustomizationSpec $specClone | where {$_.Position –eq 2}

      $nicMapping | Set-OSCustomizationNicMapping –IpMode UseStaticIP –IpAddress $ip –SubnetMask "" –DefaultGateway "" -Dns "" -NetworkAdapterMac $privateNIC.MacAddress


      $vmCust = Get-OSCustomizationSpec -Name $specClone

      #New-NetFirewallRule -DisplayName "Allow inbound ICMPv4" -Direction Inbound -Protocol ICMPv4 -IcmpType 8 -Action Allow

      Set-VM –VM $vmList[$i] –OSCustomizationSpec $vmCust –Confirm:$false



      Any assistance that I can get would be much appreciated.

      Thank you