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?