Install the Active Directory PowerShell Module on Windows 10

Today I share a script to automate all of the manual steps involved with setting up the Active Directory PowerShell module on your Windows 10 workstation.

Clickety, Click. Scripty, script.

I recently reloaded my everyday work laptop. After three years it had in-place upgrades from Windows 8 to Windows 8.1 to Windows 10. You can imagine that we dogfood a lot of software as Microsoft employees, so it was well past time for a reload.

As part of this I had to set up the Active Directory module. Since the process was more than one quick step, I decide this deserves a script to help everyone else in the world as well. How many steps does it take?

  • Find and download the CPU-architecture-appropriate Windows 10 RSAT package (Remote Server Administration Tools)
  • Install the RSAT
  • Enable the Active Directory PowerShell feature
  • Update-Help for the AD module

This is mostly a one-time task, except for updating the module help. Generally I only script things that are more repeatable. However, I know many of you like to reload your laptop on a regular basis. I also know that lots of people are deploying Windows 10 right now. So this seemed like a good community service project.

The Script

This script needs to run from an elevated ISE or console session, since it is configuring your system. Obviously it will only run on Windows 10, because that is the goal.

Like any good PowerShell scripter I borrowed code from various sources on the internet. I included comments with the links where I found handy code for downloading a file, installing a hotfix, etc.

Rather than explain the entire script line-by-line, I’ll provide the interesting parts here with comments. DO NOT copy/paste/run the code below.  It is not complete. Use the download link at the bottom of this post to get a copy of the full script.

 #requires -RunAsAdministrator

# Is the OS Windows 10?
If ((Get-CimInstance Win32_OperatingSystem).Caption -like "*Windows 10*")

# Is the RSAT already installed?
If (Get-HotFix -Id KB2693643 -ErrorAction SilentlyContinue)

# Is this x86 or x64 CPU?
If ((Get-CimInstance Win32_ComputerSystem).SystemType -like "x64*")

# Download the hotfix for RSAT install
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile($URL,$Destination)
$WebClient.Dispose()

# Install the hotfix. No native PowerShell way that I could find.
# wusa.exe returns immediately. Loop until install complete.
wusa.exe $Destination /quiet /norestart /log:$home\Documents\RSAT.log
do {
    Write-Host "." -NoNewline
    Start-Sleep -Seconds 3
} until (Get-HotFix -Id KB2693643 -ErrorAction SilentlyContinue)

# Double-check that the role is enabled after install.
If ((Get-WindowsOptionalFeature -Online -FeatureName `
    RSATClient-Roles-AD-Powershell -ErrorAction SilentlyContinue).State `
    -eq 'Enabled') {

    Write-Verbose '---RSAT AD PowerShell already enabled'

} Else {

    Enable-WindowsOptionalFeature -Online -FeatureName `
         RSATClient-Roles-AD-Powershell
}

# Install the help
Update-Help -Module ActiveDirectory -Verbose -Force

# Optionally verify the install.
dir (Join-Path -Path $HOME -ChildPath Downloads\*msu)
Get-HotFix -Id KB2693643
Get-Help Get-ADDomain
Get-ADDomain

I turned this into a function with full help and verbose output. I always like watching the blue verbose scroll as PowerShell runs. You get that sense of satisfaction that everything in the world is good when you watch your own code perform. #nerdthrills

Download

You can find the code here on the TechNet Script Gallery. Enjoy!