Hi Guys,
I wanted to change the Management IP, subnet and Gateway of all multiple Esxi Host from Powercli
and I tried below codes but it doesn't have have the subnet parameter, does someone knows how can we add subnet parameter along with IP in the same script to make the change..
$esxName = '10.2.113.66'
$tgtPg = 'Management Network' #portGroup
$vmkName = 'vmk0'
$newDG = '192.168.100.254'
$newip = '192.168.100.110'
$stackName = 'defaultTcpipStack'
$esx = Get-VMHost -Name $esxName
$netMgr = Get-View -Id $esx.ExtensionData.ConfigManager.NetworkSystem
$config = New-Object VMware.Vim.HostNetworkConfig
#change ip address to ESXi
$vmk = $netmgr.NetworkConfig.Vnic | where{$_.Device -eq $vmkName}
$vmk.ChangeOperation =[VMware.Vim.ConfigSpecOperation]::edit
$vmk.Spec.Ip.IpAddress= $newip
#change Defult Gateway
$stack = $esx.ExtensionData.Config.Network.NetStackInstance | where{$_.Key -eq $stackName}
$spec = New-Object VMware.Vim.HostNetworkConfigNetStackSpec
$spec.Operation = [VMware.Vim.ConfigSpecOperation]::edit
$spec.NetStackInstance = $stack
$spec.NetStackInstance.RouteTableConfig = New-Object VMware.Vim.HostIpRouteTableConfig
$route = New-Object VMware.Vim.HostIpRouteConfig
$route.defaultGateway = $newDG
$route.gatewayDevice = $vmkName
$stack.IpRouteConfig.DefaultGateway = $newDG
$spec.NetStackInstance.ipRouteConfig = $route
# close and commit changes
$config.NetStackSpec += $spec
$config.Vnic += $vmk
$netMgr.UpdateNetworkConfig($config,[VMware.Vim.HostConfigChangeMode]::modify)
Thanks
You can try to use the PrefixLength
$esxName = '10.2.113.66'
$tgtPg = 'Management Network' #portGroup
$vmkName = 'vmk1'
$newDG = '192.168.100.254'
$newip = '192.168.100.110'
$stackName = 'defaultTcpipStack'
$esx = Get-VMHost -Name $esxName
$netMgr = Get-View -Id $esx.ExtensionData.ConfigManager.NetworkSystem
$config = New-Object VMware.Vim.HostNetworkConfig
#change ip address to ESXi
$vmk = $netmgr.NetworkConfig.Vnic | where{$_.Device -eq $vmkName}
$vmk.ChangeOperation =[VMware.Vim.ConfigSpecOperation]::edit
$vmk.Spec.Ip.IpAddress= $newip
#change Defult Gateway
$stack = $esx.ExtensionData.Config.Network.NetStackInstance | where{$_.Key -eq $stackName}
$spec = New-Object VMware.Vim.HostNetworkConfigNetStackSpec
$spec.Operation = [VMware.Vim.ConfigSpecOperation]::edit
$spec.NetStackInstance = $stack
$spec.NetStackInstance.RouteTableConfig = New-Object VMware.Vim.HostIpRouteTableConfig
$ipRoute = New-Object -TypeName VMware.Vim.HostIpRouteOp
$ipRoute.ChangeOperation = [VMware.Vim.HostConfigChangeOperation]::edit
$ipRouteEntry = New-Object -TypeName VMware.Vim.HostIpRouteEntry
$ipRouteEntry.Gateway = $newDG
$ipRouteEntry.Network = ($newDG.Split('.')[0..2] + '0') -join '.'
$ipRouteEntry.PrefixLength = 24
$ipRoute.Route = $ipRouteEntry
$stack.RouteTableConfig.IpRoute += $ipRoute
$route = New-Object VMware.Vim.HostIpRouteConfig
$route.defaultGateway = $newDG
$route.gatewayDevice = $vmkName
$stack.IpRouteConfig.DefaultGateway = $newDG
$spec.NetStackInstance.ipRouteConfig = $route
# close and commit changes
$config.NetStackSpec += $spec
$config.Vnic += $vmk
$netMgr.UpdateNetworkConfig($config,[VMware.Vim.HostConfigChangeMode]::modify)
Blog: lucd.info Twitter: @LucD22 Co-author PowerCLI Reference