function Set-MyOffloadPolicy { param([string]$VMHost,[string]$vSwitch ,[string]$CsumOffload,[string]$TcpSegmentation,[string]$zeroCopyXmit) $ErrorActionPreference = "Stop" If (!$VMHost -or !$vSwitch) { Write-Error "Usage: Set-MyvSwitch -VMHost [string] -vSwtich [string] [-CsumOffload ] [-TcpSegmentation ] [-zeroCopyXmit ]" } $network = Get-VMHostNetwork -VMHost $VMHost $networkView = $network | Get-View $spec = ($networkView.NetworkConfig.vSwitch | Where { $_.Name -eq $vSwitch }).Spec #OffloadPolicy If ($CsumOffload -or $TcpSegmentation -or $zeroCopyXmit) { If ($CsumOffload) { If ($CsumOffload -eq "On") { $spec.Policy.OffloadPolicy.CsumOffload = $True } ElseIf ($CsumOffload -eq "Off") { $spec.Policy.OffloadPolicy.CsumOffload = $False } Else { Write-Error "Incorrect value for CsumOffload. Accepted values: On / Off" } } If ($TcpSegmentation) { If ($TcpSegmentation -eq "On") { $spec.Policy.OffloadPolicy.TcpSegmentation = $True } ElseIf ($TcpSegmentation -eq "Off") { $spec.Policy.OffloadPolicy.TcpSegmentation = $False } Else { Write-Error "Incorrect value for TcpSegmentation. Accepted values: On / Off" } } If ($zeroCopyXmit) { If ($zeroCopyXmit -eq "On") { $spec.Policy.OffloadPolicy.zeroCopyXmit = $True } ElseIf ($zeroCopyXmit -eq "Off") { $spec.Policy.OffloadPolicy.zeroCopyXmit = $False } Else { Write-Error "Incorrect value for zeroCopyXmit. Accepted values: On / Off" } } #Show settings Write-Host "Ready to apply the following offload policy:" $spec.Policy.OffloadPolicy $action = Read-Host "Do you wish to continue? (y/n)" If ($action -eq "y") { #Update vSwitch $networkView.updateVirtualSwitch($vSwitch,$spec) } Else { Write-Error "Action cancelled by user." } } Else { Write-Error "No options specified. Usage: Set-MyvSwitch -VMHost [string] -vSwtich [string] [-CsumOffload ] [-TcpSegmentation ] [-zeroCopyXmit ]" } }