Tag Archive: script

You run the Exchange 2007 BPA, and get a non-default setting like this one:

BPA Alert

BPA Alert

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.




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


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

PowerShell Error

PowerShell Error

*** 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”.

Windows Update

Windows Update

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:

End Result, Regedit

End Result, Regedit

I use this simple script to backup some items on my server, which I would like separated out of the standard Windows SBS 2008 Backup and WSUS 3. It is possible to do a lot with the default server backup, but what if you need just one file? Welol, it’s a pain in the butt to get that out of a full server backup. You could use NTBackup to backup the whole server, but restoring that can be difficult, as SBS 2008 doesn’t recognize NTBackup’s. You could do it with the WBADMIN command, but a lot of people don’t know how to use it. So here is the script. I will post the code, then describe what each part does. Feel free to customize it, or post improvements on it. Im also going to remove all of the echo commands that I have that let me know what each stage is doing. To add a text feedback to this script that will inform you of what’s going on, do the following:

Type Echo
I use ***TEXT*** so that it is visually explicit.

@SET STSADM="c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm.exe"
for /F "tokens=1-4 delims=/- " %%A in ('date/T') do set DATE=%%B%%C%%D
for /F "tokens=1-4 delims=:., " %%a in ('time/T') do set TIME=%%a%%b%%c


%STSADM% -o backup -url "http://companyweb" -filename "\\solaceserver\300GB HP Backup\Companyweb Backup\Companyweb_Backup_%DATE%_%TIME%.dat" -backupmethod differential -item "farm" > "\\solaceserver\300GB HP Backup\Companyweb_Backup_log.txt"

xcopy /y "C:\windows\system32\inetsrv\config" "A:\IIS Backup\" /e > "A:\IIS_Backup_log.txt"
xcopy /y "D:\EZ Claim Data" "A:\EZ Backup\" /e > "A:\EZ_Backup_log.txt"
xcopy /y "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12" "A:\CompanywebStyle\" /e > "A:\Companyweb_Style_Backup_log.txt"

sqlcmd -S .\SBSMONITORING -i "C:\SQL Scripts\sbsmonitoringbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\admincontentbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\sharewebdbbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\spconfigbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\susdbbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\wsscontent_c76dcbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\wsscontent_cb60cbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\wsscontentbackup.sql"
sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i "C:\SQL Scripts\wsssearchbackup.sql"

IF EXIST A:\GPO_Backup RMDIR A:\GPO_Backup /s /q

FOR /f "tokens=1-3 delims=/ " %%a in ('DATE/T') do set date=%%b-%%a-%%c
FOR /F "tokens=1-5 delims=/: " %%j IN ('TIME/T') do set time=%%j-%%k

cscript BackupAllGPOs.wsf A:\GPO_Backup /Comment:"GPO backup on %DATE%_%TIME%" /Domain:solace.local

for /F "tokens=1-4 delims=/- " %%A in ('date/T') do set DATE=%%B%%C%%D
for /F "tokens=1-4 delims=:., " %%a in ('time/T') do set TIME=%%a%%b%%c

ntbackup backup "@A:\Exchange File Backup\Exchange_NTBackup_Config.bks" /a /d "Exchange Server" /v:no /r:no /rs:no /hc:off /m normal /j "Exchange Server" /l:s /f "A:\Exchange File Backup\Exchange_Backup_%DATE%_%TIME%.bkf" > "A:\Exchange_Backup_Log.txt"

Code Description
@ECHO OFF This gags the code from being repeated visually on the script
@SET STSADM=”c:\program files\common files\microsoft shared\web server extensions\12\bin\stsadm.exe” This sets the directory for STSADM. This might vary by computer depending upon your install, but the directory you see is the default.
for /F “tokens=1-4 delims=/- ” %%A in (‘date/T’) do set DATE=%%B%%C%%D for /F “tokens=1-4 delims=:., ” %%a in (‘time/T’) do set TIME=%%a%%b%%c This code and the following FOR code sets variables that allow us to put the date into a filename.
CHOICE /C:YN /D:N /T:3 This is a choice command, with a timer, /T:3 is 3 seconds. This doesn’t really do anything but pause- I add the text to it something like Press Ctrl-C to cancel backup now! Ctrl-C breaks the script.
%STSADM% -o backup -url “http://companyweb” -filename “\\solaceserver\300GB HP Backup\Companyweb Backup\Companyweb_Backup_%DATE%_%TIME%.dat” -backupmethod differential -item “farm” > “\\solaceserver\300GB HP Backup\Companyweb_Backup_log.txt” This runs the STSADM command. It is the command line version of Sharepoint Administration, and command backup without using the GUI in Central Administration. –o backup tells it to backup “http://companyweb”. –Filename tells us the location of the backup.dat. the > xxx.log.txt tells the script to output all the results of that command into a logfile. I have each command in a separate logfile to ease confusion.
xcopy /y “C:\windows\system32\inetsrv\config” “A:\IIS Backup\” /e > “A:\IIS_Backup_log.txt” Xcopy is simply a copy command. I run this on several critical directories, and make a hard backup of the files contained. /y makes the script overwrite, while the following “ are the backup target and backup end directory. /e copies subdirectories and folders.
sqlcmd -S .\SBSMONITORING -i “C:\SQL Scripts\sbsmonitoringbackup.sql” sqlcmd -S \\.\pipe\MSSQL$MICROSOFT##SSEE\sql\query -i “C:\SQL Scripts\admincontentbackup.sql” I run 10 of these. SQL 2005 Express does not offer native backup scheduling. But you can enter an instance, and manually set up a backup. Then you can script this to file, then you run the file from this script. How to do this is documented here.
IF EXIST A:\GPO_Backup RMDIR A:\GPO_Backup /s /q IF NOT EXIST A:\GPO_Backup MD A:\GPO_Backup This command checks for a directory. If it exists it deletes it and creates it again, empty. This keeps down the size of a directory.
cd “C:\GPMC\SCRIPTS” cscript BackupAllGPOs.wsf A:\GPO_Backup /Comment:”GPO backup on %DATE%_%TIME%” /Domain:solace.local This backups all Group Policy Objects. Download the script files from here. Change this command to match the location you install the .wsf files. Quite handy.
ntbackup backup “@A:\Exchange File Backup\Exchange_NTBackup_Config.bks” /a /d “Exchange Server” /v:no /r:no /rs:no /hc:off /m normal /j “Exchange Server” /l:s /f “A:\Exchange File Backup\Exchange_Backup_%DATE%_%TIME%.bkf” > “A:\Exchange_Backup_Log.txt” This performs an Exchange only backup. You need to create the backup with NTBackup, and save selection as. Then you reference the bks file in this script. The command descriptions are here.

If you are a Sharepoint Administrator, great. SQL Admin, awsome. If you know programming, sweet. But what about those of us that don’t know these things? What if you manage a small Sharepoint site, and don’t know the inner workings of SQL? Extracting content from a database backup after a restore can be a nightmare.

I discovered this post and I had to put it here- this tool is rediculously usefull. Pascal Gill designed a small program with GUI which can be used to extract content from a sharepoint database, and it even keeps directory structure and subfolders. I also used it to extract a custom list with metadata so that I could put it onto my new site. Thanks Pascal!

Sharepoint Exporter

Sharepoint Exporter

The site is here.

The tool is here.

If you have any questions about what to fill in for the database name and server fields, please post here or on Pascal’s blog.
This tool is not my creation, and I can not assure you of the files contents. I can however vouch for the validity of the program and code, as I have used it many times.

%d bloggers like this: