Windows

在 Windows server 2008/2012 中禁用 NIC 高級屬性

  • March 3, 2015

我有一些 Rackspace 虛擬機,需要禁用這些高級 NIC 屬性:

  • 正確的 TCP/UDP 校驗和值
  • IPv4 校驗和解除安裝
  • 大接收解除安裝
  • 大型發送解除安裝版本 2
  • TCP 校驗和解除安裝
  • UDP校驗和解除安裝

現在我需要使用 Powershell/Batch 來做到這一點,直到現在我有了這個。

Disable-NetAdapterChecksumOffload -Name private -UdpIPv4 -TcpIPv4
Disable-NetAdapterLso -Name private

cmd.exe /C "netsh int tcp set global chimney=disabled"
cmd.exe /C "netsh int tcp set global rss=disabled"
cmd.exe /C "netsh int tcp set global netdma=disabled"
cmd.exe /C "netsh int ip set global taskoffload=disabled"

new-ItemProperty -force -Path hklm:\\\\HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\TCPIP\\Parameters -Name DisableTaskOffload -Value 1
new-ItemProperty -force -Path hklm:\\\\HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\TCPIP\\Parameters -Name TCPChecksumOffloadIPv4  -Value 0
new-ItemProperty -force -Path hklm:\\\\HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\TCPIP\\Parameters -Name UDPChecksumOffloadIPv4  -Value 0

但我不能讓它工作。

我設法用這個 powershell 腳本來做到這一點。

$root = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E972-E325-11CE-BFC1-08002BE10318}'
$items = Get-ChildItem -Path Registry::$Root -Name
Foreach ($item in $items) {
   if ($item -ne "Properties") {
       $path = $root + "\" + $item
       $DriverDesc = Get-ItemProperty -Path Registry::$path | Select-Object -expandproperty DriverDesc
       if ($DriverDesc -eq "Citrix PV Ethernet Adapter") {
           Set-ItemProperty -path Registry::$path -Name LROIPv4 -Value 0
       }
   }
}

new-ItemProperty -force -Path hklm:\\\\HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\TCPIP\\Parameters -Name IPChecksumOffloadIPv4  -Value 0
new-ItemProperty -force -Path hklm:\\\\HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\TCPIP\\Parameters -Name LSOv2IPv4 -Value 0
new-ItemProperty -force -Path hklm:\\\\HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\TCPIP\\Parameters -Name NeedChecksumValue  -Value 0
new-ItemProperty -force -Path hklm:\\\\HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\TCPIP\\Parameters -Name TCPChecksumOffloadIPv4  -Value 0
new-ItemProperty -force -Path hklm:\\\\HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\TCPIP\\Parameters -Name UDPChecksumOffloadIPv4  -Value 0
new-ItemProperty -force -Path hklm:\\\\HKEY_LOCAL_MACHINE\\System\\CurrentControlSet\\Services\\TCPIP\\Parameters -Name LROIPv4  -Value 0

重要的是看到要更改的屬性。

使用:

PS > Get-NetAdapter

PS > Get-NetAdapterAdvancedProperty name_of_the_nic

PS > Get-NetAdapterAdvancedProperty name_of_the_nic | ft RegistryKeyword

現在根據需要更新 RegistryKeyword

引用自:https://serverfault.com/questions/641930