You run the Exchange 2007 BPA, and get a non-default setting like this one:
First, I will explain what caused this. You wanted to disable some settings using netsh, namely autotuning level and rss, by entering these commands at the prompt:
netsh in tcp set global autotuninglevel=disabled
This is done fro two reasons. One, it speeds up remote desktop connections, which can be really slow. Second, it comes up in the SBS 2008 BPA as a warning and invites you to run up to 4 netsh commands to change the TCP values. Don’t you love how Microsoft tells us to fix one thing while the fix causes another problem? Hum.
Go to this key, and look at the values. They are probably messed up like mine, though some of them can be messed up and not others. Your keepalivetime key might be some high number like the rest, mine is sixty.
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters
So now, let’s reverse these settings. These settings are important- you can’t just go into the registry and delete or change the values. Microsoft provides a hotfix that will stop these netsh commands from changing the values- I won’t be running them again, I do not need the hotfix. Hotfix’s and my production server don’t mix well. He hotfix is here.
First, we should restore a backup prior to the change if we have one. I do not, so meh. But I will take this opportunity to MAKE a backup, in case I botch something here. Right click the Parameters folder, and click export. Give it a nice name, like tcpip-param.reg and save it someplace safe. If all else fails we can restore this later.
Microsoft provides a PowerShell script to fix these entries. Let’s see if we can get that to work. Download the script from here. You will have to log in. Ill download it and host it on WordPress. I assure you this file is safe, but if you are unsure get the one from MS. Here is the ps1 file. I renamed it to a .doc. To change it back download it and rename it to netshregfix.ps1. Here is the code it contains. you could also make a new text document, paste in the code, and save it as .ps1
NetshRegFix.doc
MD $env:UserProfile\Desktop\TcpIpParametersBackup REG Export HKLM\System\CurrentControlSet\Services\TcpIp\Parameters $env:UserProfile\Desktop\TcpIpParametersBackup\Backup.Reg Get-Item "HKLM:\System\CurrentControlSet\Services\TcpIp\Parameters" | ForEach-Object { Set-ItemProperty -Path $_.pspath -Name "TcpTimedWaitDelay" -value 60 -ErrorAction SilentlyContinue Remove-ItemProperty -Path $_.pspath -Name "DisableTaskOffload" -ErrorAction SilentlyContinue Remove-ItemProperty -Path $_.pspath -Name "EnablePMTUBHDetect" -ErrorAction SilentlyContinue Remove-ItemProperty -Path $_.pspath -Name "EnablePMTUDiscovery" -ErrorAction SilentlyContinue Remove-ItemProperty -Path $_.pspath -Name "KeepAliveInterval" -ErrorAction SilentlyContinue Remove-ItemProperty -Path $_.pspath -Name "KeepAliveTime" -ErrorAction SilentlyContinue Remove-ItemProperty -Path $_.pspath -Name "Tcp1323Opts" -ErrorAction SilentlyContinue Remove-ItemProperty -Path $_.pspath -Name "TcpFinWait2Delay" -ErrorAction SilentlyContinue Remove-ItemProperty -Path $_.pspath -Name "TcpMaxDataRetransmissions" -ErrorAction SilentlyContinue Remove-ItemProperty -Path $_.pspath -Name "TcpUseRFC1122UrgentPointer" -ErrorAction SilentlyContinue } Write-Output "You must reboot your server for the changes to take effect"
Save the file to someplace easy to navigate to, I chose C:\. Now open Windows PowerShell. Start>Run> PowerShell.
Type in cd C:\ to navigate to where the file is. If you placed it in another location, go there.
Now type NetshRegFix.ps1
*** Before you do this step, scroll down to the next bold, asterisk’d item. You do not need to install this update- though you can if you do not have the PowerShell 2.0 yet. ***
You get an error, as if PowerShell does not even recognize that this is a script. Well, let’s update PowerShell. Go to http://support.microsoft.com/kb/968929 and select your OS. Download the MSU and install it.
It will install a “hotfix”.
Ah crap. Need to restart. So much for doing this during lunch. Ill do it at 5:30 when everyone is gone.
*** Continue from here, to complete running the script in PowerShell v1.0. ***
Wait wait. What about just running the script? Go to C:\ and double-click NetshRegFix.ps1. It opens up in Notepad. Let’s open it up in PowerShell.
Click open with, browse for program. Navigate to c:\Windows\system32\windowspowershell\v1.0\ and select powershell.exe.
Now go back to the file and double-click it. A screen flashes- did it complete? To check, go to the registry setting tcp/ip>Parameters. It should look like this: