VMware Cloud Community
houghtp
Contributor
Contributor
Jump to solution

Disabling host network adapater

I'm trying to run the following script but get an error:

Cannot validate argument on parameter 'VIObject'. The argument is null or empty. Supply an argument that is not null or empty and then try the command again.

At :line:46 char:18

+ $_this = Get-View <<<< $vmHostViewNetSys

Function Set-HostNetworkAdapterDisabled($activeNic, $vmHostViewNetSys)
{
	# ------- UpdateVirtualSwitch -------
	
	$vswitchName = "vSwitch3"
	
	$spec = New-Object VMware.Vim.HostVirtualSwitchSpec
	$spec.numPorts = 64
	$spec.bridge = New-Object VMware.Vim.HostVirtualSwitchBondBridge
	$spec.bridge.nicDevice = New-Object System.String[] (2)
	$spec.bridge.nicDevice[0] = "vmnic5"
	$spec.bridge.nicDevice[1] = "vmnic10"
	$spec.bridge.beacon = New-Object VMware.Vim.HostVirtualSwitchBeaconConfig
	$spec.bridge.beacon.interval = 1
	$spec.bridge.linkDiscoveryProtocolConfig = New-Object VMware.Vim.LinkDiscoveryProtocolConfig
	$spec.bridge.linkDiscoveryProtocolConfig.protocol = "cdp"
	$spec.bridge.linkDiscoveryProtocolConfig.operation = "listen"
	$spec.policy = New-Object VMware.Vim.HostNetworkPolicy
	$spec.policy.security = New-Object VMware.Vim.HostNetworkSecurityPolicy
	$spec.policy.security.allowPromiscuous = $false
	$spec.policy.security.macChanges = $false
	$spec.policy.security.forgedTransmits = $false
	$spec.policy.nicTeaming = New-Object VMware.Vim.HostNicTeamingPolicy
	$spec.policy.nicTeaming.policy = "loadbalance_srcid"
	$spec.policy.nicTeaming.reversePolicy = $true
	$spec.policy.nicTeaming.notifySwitches = $true
	$spec.policy.nicTeaming.rollingOrder = $false
	$spec.policy.nicTeaming.failureCriteria = New-Object VMware.Vim.HostNicFailureCriteria
	$spec.policy.nicTeaming.failureCriteria.checkSpeed = "minimum"
	$spec.policy.nicTeaming.failureCriteria.speed = 10
	$spec.policy.nicTeaming.failureCriteria.checkDuplex = $false
	$spec.policy.nicTeaming.failureCriteria.fullDuplex = $false
	$spec.policy.nicTeaming.failureCriteria.checkErrorPercent = $false
	$spec.policy.nicTeaming.failureCriteria.percentage = 0
	$spec.policy.nicTeaming.failureCriteria.checkBeacon = $false
	$spec.policy.nicTeaming.nicOrder = New-Object VMware.Vim.HostNicOrderPolicy
	$spec.policy.nicTeaming.nicOrder.activeNic = New-Object System.String[] (1)
	$spec.policy.nicTeaming.nicOrder.activeNic[0] = $activeNic
	$spec.policy.offloadPolicy = New-Object VMware.Vim.HostNetOffloadCapabilities
	$spec.policy.offloadPolicy.csumOffload = $true
	$spec.policy.offloadPolicy.tcpSegmentation = $true
	$spec.policy.offloadPolicy.zeroCopyXmit = $true
	$spec.policy.shapingPolicy = New-Object VMware.Vim.HostNetworkTrafficShapingPolicy
	$spec.policy.shapingPolicy.enabled = $false
	
	$_this = Get-View $vmHostViewNetSys
	$_this.UpdateVirtualSwitch($vswitchName, $spec)
}

foreach ($VMHost in Get-VMHost)
{
	"testing host " + $VMHost | Out-File $logFile -Append
	# vmHost View
	$vmHostView = $VMHost | Get-View
	$vmHostViewNetSys = $vmHostView.Configmanager.NetworkSystem
                foreach ($nic in $hostNics)
	{		
		#disable first host network adapter
		"disabling network adapter " + $nic + " on host " + $VMHost | Out-File $logFile -Append
		Set-HostNetworkAdapterDisabled($nic, $vmHostViewNetSys)	
                                # run tests below....
                }
}

but if i change the code to access the Get-View Object of the $vmHostViewNetSys before entering into the function it doesn't error. Any ideas?

Reply
0 Kudos
1 Solution

Accepted Solutions
RvdNieuwendijk
Leadership
Leadership
Jump to solution

How do you run this function? You should do it like:

Set-HostNetworkAdapterDisabled -activeNic $activeNic -vmHostViewNetSys $vmHostViewNetSys

Regards, Robert

Blog: https://rvdnieuwendijk.com/ | Twitter: @rvdnieuwendijk | Author of: https://www.packtpub.com/virtualization-and-cloud/learning-powercli-second-edition

View solution in original post

Reply
0 Kudos
3 Replies
RvdNieuwendijk
Leadership
Leadership
Jump to solution

How do you run this function? You should do it like:

Set-HostNetworkAdapterDisabled -activeNic $activeNic -vmHostViewNetSys $vmHostViewNetSys

Regards, Robert

Blog: https://rvdnieuwendijk.com/ | Twitter: @rvdnieuwendijk | Author of: https://www.packtpub.com/virtualization-and-cloud/learning-powercli-second-edition
Reply
0 Kudos
houghtp
Contributor
Contributor
Jump to solution

I just run it calling Set-HostNetworkAdapterDisabled($nic, $vmHostViewNetSys)

which i whought called the function ok, but just errors when trying to Get-View on the Host Network System. But, i tried it your way and it worked. Can you explain why?

thanks very much!

Reply
0 Kudos
RvdNieuwendijk
Leadership
Leadership
Jump to solution

You can't call a function with "Set-HostNetworkAdapterDisabled($nic, $vmHostViewNetSys)" in PowerShell. You have to call it like you call a cmdlet. So no () and no comma's. You can do it without the parameter names, like this:

Set-HostNetworkAdapterDisabled $nic $vmHostViewNetSys

but then you have to know the parameters position. So I think it is easier to use the parameter names.

Blog: https://rvdnieuwendijk.com/ | Twitter: @rvdnieuwendijk | Author of: https://www.packtpub.com/virtualization-and-cloud/learning-powercli-second-edition