SharePoint 2010: Verify the Product Version of SharePoint 2010 that is Installed

I was in the process of updating my production environment and wanted to verify which cumulative updates I had applied already to the test environment. After some searching I found a command to use and compared it to the build numbers on the SharePoint TechNet site.


To verify the installed build number:

1) Run the SharePoint 2010 Management Shell as the Farm Administrator.

2) Run the following command:

Update Release Build Number
April 2011 14.0.5138.5001
June 2011 14.0.6106.5002
August 2011 14.0.6109.5005
October 2011 14.0.6112.5000
December 2011 14.0.6114.5000
February 2012 14.0.6117.5002
April 2012 14.0.6120.5006
June 2012 14.0.6123.5002
August 2012 14.0.6126.5001
October 2012 14.0.6129.5003
December 2012 14.0.6131.5003
February 2013 14.0.6134.5000
Posted in SharePoint 2010 | Tagged , | Leave a comment

Active Directory: Enable the Active Directory Recycle Bin

I have been wanting to enable the Active Directory Recycle Bin for some time following our upgrade to Windows Server 2008 R2. After some research, I found “The AD Recycle Bin: Understanding, Implementing, Best Practices, and Troubleshooting” article in the TechNet Blogs that explained the whole process.

In short, your domain and forest functional levels must be on Windows Server 2008 R2 first.

Then it is as easy as the following two Powershell commands on a domain controller as a Domain Admin:

1) Import-module ActiveDirectory

2) Enable-ADOptionalFeature 'Recycle Bin Feature' -Scope ForestOrConfigurationSet -Target forestrootdomainname

Posted in Active Directory, PowerShell | Tagged , , , | 1 Comment

Windows Server 2008 R2: Configure Time Synchronization to an External Source

After upgrading my servers to Windows Server 2008 R2, I needed to reconfigure the time synchronization to an external source. Our Hardware Firewall is our time server in this case.


Open a command prompt and run the following commands to sync with the Netscreen Firewall:

1) w32tm /config /manualpeerlist:"",0x8 /syncfromflags:MANUAL

2) net stop w32time

3) net start w32time

Wait about 30 seconds.

4) w32tm /query /status

You should get the following results:

Leap Indicator: 0(no warning)
Stratum: 2 (secondary reference - syncd by (S)NTP)
Precision: -6 (15.625ms per tick)
Root Delay: 0.0312500s
Root Dispersion: 2.7839913s
ReferenceId: 0x0A0008C8 (source IP:
Last Successful Sync Time: 7/17/2012 8:45:28 AM
Poll Interval: 6 (64s)

Posted in Windows Server | Tagged , , , | Leave a comment

PowerShell: Audit Printer Event Logs

Color toner costs recently came under scrutiny by management at my company. In order to address the rising cost, Management requested a report of Color Printer use showing who, what, when, and how much is printed. This requires two steps on our Windows Server 2008 R2 servers:

1) Print Events Logging must be enabled. It is disabled by default.

2) A Powershell Script to parse out the data requested.

3) .Net Framework 3.5.1 Features installed on the Print Server – Thanks to Simon for pointing this out in the comments section below.

Enable Print Event Logging

1) Open the Event Viewer on the Print Server. (Start=>Run, eventvwr.msc)

2) Expand out Application and Services Logs => Microsoft => Windows => PrintService.

3) Right Click on the Operational log.

4) Select Properties from the pop-up menu.

5) Check the box to Enable Logging

Powershell Script to Parse Logs

Fortunately, I had the foresight to enable Print Logging when we began using this server as a Print Server. Otherwise, you will need to wait till history is built up to use the powershell script I wrote below.

Make sure you replace my generic printer names for ones you wish to report on.

$dte = Get-Date

$m = $dte.month

$cmonth = Get-Date -UFormat %m

$d = $

$cday = Get-Date -UFormat %d

$cyear = $dte.year

$filename = "ColorPrinterLog_" + $cyear + "_" +$cmonth + ".csv"

$startdatefull = ($dte).AddDays(-30)

$startdate = ($startdatefull).ToShortDateString()

$enddate = ($dte).ToShortDateString()

"Job Name: Monthly Color Printer Log"

"Start Date: " + $startdate

"End Date: " + $enddate

Write-Host " " | Out-File "C:\$filename"

Write-Host "Scanning Archived Printer Event Logs..."


Get-ChildItem -include Archive-Microsoft-Windows-PrintService%4Operational-$cyear-$cmonth*.evtx -Path C:\Windows\System32\winevt\Logs -recurse |

ForEach-Object {

"Parsing $($_.fullname)`r`n"


{ $events = get-winevent -FilterHashTable @{Path=$_.fullname; ID=307; StartTime=$startdate; EndTime=$enddate ;} |

where {($_.Message -like "*printer1*") -or ($_.Message -like "*printer2*") -or ($_.Message -like "*printer3*") -or ($_.Message -like "*printer4*") -or ($_.Message -like "*printer5*") -or ($_.Message -like "*printer6*") } |

select timecreated,message |

Export-Csv "C:\Temp.csv" -Encoding ASCII -notype

[System.IO.File]::ReadAllText("C:\Temp.csv") | Out-File -Append "C:\$filename"


Catch [System.Exception] {"No results in current log"}



Write-Host "Scanning Complete!"


Now, this is just a simple script so you will need to use a text editor to find/replace phrases with commas in order to filter and sort into a usable report.

Download My Script (Right Click and choose Save Link As…)

Posted in PowerShell, Windows Server | Tagged , , , , , , , | 21 Comments

Active Directory: Transfer Active Directory FSMO Roles

We are in the process of upgrading our domain controllers from Windows Server 2003 to Windows Server 2008 R2 SP1. This also requires some changes in hardware because one of our servers since Windows Server 2008 R2 is a 64-bit operating system.

The process of upgrading required that we transfer the Active Directory FSMO roles around from one server to the next. This was a pretty easy task to accomplish and can be done a couple of different ways. I chose to use NTDSUTIL to complete this task using the following commands:

C:\Users\Administrator>netdom query /domain:domain fsmo
Schema master
Domain naming master
RID pool manager
Infrastructure master
The command completed successfully.


ntdsutil: roles

fsmo maintenance: connections

server connections: connect to server servername
Binding to servername ...
Connected to servername using credentials of locally logged on user.

server connections: q

fsmo maintenance: select operation target

select operation target: list roles for connected server
Server "servername" knows about 5 roles
Schema - CN=NTDS Settings,CN=oldservername,CN=Servers,CN=sitename,CN=Sites,CN=Configuration,DC=domain,DC=com
Naming Master - CN=NTDS Settings,CN=oldservername,CN=Servers,CN=sitename,CN=Sites,CN=Configuration,DC=domain,DC=com
PDC - CN=NTDS Settings,CN=oldservername,CN=Servers,CN=sitename,CN=Sites,CN=Configuration,DC=domain,DC=com
RID - CN=NTDS Settings,CN=oldservername,CN=Servers,CN=sitename,CN=Sites,CN=Configuration,DC=domain,DC=com
Infrastructure - CN=NTDS Settings,CN=oldservername,CN=Servers,CN=sitename,CN=Sites,CN=Configuration,DC=domain,DC=com

fsmo maintenance: transfer infrastructure master

fsmo maintenance: transfer naming master

fsmo maintenance: transfer rid master

fsmo maintenance: transfer schema master

fsmo maintenance: transfer PDC

fsmo maintenance: q

ntdsutil: q

C:\Users\Administrator>netdom query /domain:domain fsmo
Schema master
Domain naming master
RID pool manager
Infrastructure master
The command completed successfully.

Posted in Active Directory, Windows Server | Tagged , , , , | Leave a comment

SharePoint: Ribbon Tabs are Too Small and Sign-on Menu is Missing

Today, I had a user contact me regarding testing they were performing against their SharePoint Team site. They were no longer able to logon as another user. When I went to see their computer I noticed three things:

1) Ribbon Tabs are too small
2) Ribbon Tab text is truncated
3) User’s Name and drop-down menu were missing from the Ribbon.


After a quick search I found a Microsoft Support Article with my exact issue.

Internet Explorer 8 is zoomed in past 100%.

The solution was quite simple. Open the View Menu, go to Zoom, and select 100%.

Posted in SharePoint 2010 | Tagged , , | Leave a comment

SharePoint: Errors on Page and Scroll Bar is Grayed Out

We suddenly started to receive calls that people were no longer able to scroll on our Intranet Home Page. This was a quickly spreading problem. There were two common factors:

1) Windows XP SP3
2) Internet Explorer 8

When I visited the users experiencing the problem, I quickly noted the following issues:

-Users are reporting that they are unable to scroll.
-The scroll bar is grayed out.
-Errors On Page reported in the status bar.


I soon learned that our main web administrator had implemented some Javascript on the Home Page that would error out. To resolve:

1) Modify the web.config file
2) Modify the following item in the config file, or add it if it is missing:

<scriptResourceHandler enableCompression="false" enableCaching="true" />

Inside this section:


Posted in SharePoint 2010, Windows XP | Tagged , , | Leave a comment