I need to deploy VMs with a PowerCLI script. I'm running the following command line in a loop to configure Multiple NICS and IP addresses on the deployed VM: "Set-OSCustomizationNicMapping -IpMode UseStaticIp -IpAddress $ipaddr -SubnetMask $subnet -DefaultGateway $gateway -Dns $dns1,$dns2"
but I do not want to set a Default Gateway on each Netword card even if the -IPMode is UseStaticIp.
As a current Workaround I run a netsh command to delete the Gateway after starting the VM.
Does anyone has a solution to Deploy a VM with multiple NICs with Static IP addresses without configuring Default Gateway in PowerCLI?
Thanks for your Help,
It looks as if the requirement to include a default gateway is not justified in vSphere 5.*.
If you use the CreateCustomizationSpec method, you can easily skip entering the default gateway (and the subnetmask as well for that matter).
This sample code produces a CustomizationSpec with 3 NICs included and without a default gateway.
$specMgr = Get-View CustomizationSpecManager
$item = New-Object VMware.Vim.CustomizationSpecItem
$item.Info = New-Object VMware.Vim.CustomizationSpecInfo
$item.Info.Name = "TestMultNICSDK"
$item.Info.Description = "Testing with the SDK method"
$item.Info.Type = "Windows"
$item.Spec = New-Object VMware.Vim.CustomizationSpec
$item.Spec.globalIPSettings = New-Object VMware.Vim.CustomizationGlobalIPSettings
$item.Spec.identity = New-Object VMware.Vim.CustomizationSysprep
$item.Spec.identity.guiUnattended = New-Object VMware.Vim.CustomizationGuiUnattended
$item.Spec.identity.guiUnattended.autoLogon = $false
$item.Spec.identity.guiUnattended.autoLogonCount = 0
$item.Spec.identity.guiUnattended.timeZone = 0
$item.Spec.identity.identification = New-Object VMware.Vim.CustomizationIdentification
$item.Spec.identity.identification.JoinWorkgroup = "MYWG"
$item.Spec.identity.UserData = New-Object VMware.Vim.CustomizationUserData
$item.Spec.identity.UserData.FullName = "My Fullname"
$item.Spec.identity.UserData.OrgName = "My Orgname"
$item.Spec.identity.UserData.ProductId = ""
$item.Spec.identity.UserData.ComputerName = New-Object VMware.Vim.CustomizationVirtualMachineName
$item.Spec.Options = New-Object VMware.Vim.CustomizationWinOptions
$item.Spec.Options.ChangeSID = $false
$item.Spec.Options.DeleteAccounts = $false
1..3 | %{ $nic = New-Object VMware.Vim.CustomizationAdapterMapping
$nic.Adapter = New-Object VMware.Vim.CustomizationIPSettings
$nic.Adapter.ip = New-Object VMware.Vim.CustomizationFixedIp
$nic.Adapter.ip.ipAddress = "192.168.1.$_"
$nic.Adapter.subnetMask = "255.255.255.0"
$item.Spec.nicSettingMap += $nic
} $specMgr.CreateCustomizationSpec($item)
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference
Many thanks, it works.
I just added a $nic.Adapter.Gateway = $gateway instruction to set a default gateway on NIC #1.