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

# 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 `

# 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

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


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

Comments (14)
  1. Hey Ashley,

    I have a similar example that you may like as detailed in my blog post at

    Let me know what your thoughts are

    Many thanks


  2. Bob Smiley says:

    Thank you thank you thank you.
    Worked like a charm first time.

  3. Denny Figuerres says:

    at this time the windows powershell defaults to requiring the script be signed to run it…

  4. Des Hayles says:

    Worked like a charm. Thanks

  5. Trendisoft says:

    Thank you for sharing
    Make work with a simplest method. But I like the way your script is structured!

  6. DevinL says:

    Thank you for this script! Worked flawlessly first time around on my Windows 10 machine and will save me much time in the future.

  7. Heng Eng says:

    The script ran flawlessly on on PC, but on another, at the end, it hit:

    Enable-WindowsOptionalFeature : Feature name RSATClient-Roles-AD-Powershell is unknown.
    At D:\Scripts\install-ADmodule.ps1:129 char:9
    + Enable-WindowsOptionalFeature -Online -FeatureName RSATClient …
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : NotSpecified: (:) [Enable-WindowsOptionalFeature], COMException
    + FullyQualifiedErrorId : Microsoft.Dism.Commands.EnableWindowsOptionalFeatureCommand

    VERBOSE: —Downloading help for AD PowerShell
    Update-Help : No Windows PowerShell modules were found that match the following pattern: ActiveDirectory. Verify the
    pattern and then try the command again.
    At D:\Scripts\install-ADmodule.ps1:134 char:5
    + Update-Help -Module ActiveDirectory -Verbose -Force
    + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo : InvalidArgument: (ActiveDirectory:String) [Update-Help], Exception
    + FullyQualifiedErrorId : ModuleNotFound,Microsoft.PowerShell.Commands.UpdateHelpCommand

    Is there a fix or workaround? Thanks.

    1. Dima says:

      Probably you also need to run this to verify that reboot is not required after setup.
      If ((Get-HotFix -Id KB2693643).InstalledOn) { Write-Host “—It is really installed and reboot is not required.”}
      If reboot is required, then “InstalledOn” should be empty.

    2. Manu Philip says:

      I have also faced the following issue finally
      Enable-WindowsOptionalFeature : Feature name RSATClient-Roles-AD-Powershell is unknown.

      Just did a restart of my Windows 10 desktop. Once the desktop is back I have ran Enable-WindowsOptionalFeature -Online -FeatureName RSATClient-Roles-AD-Powershell from PS again. It worked fine then
      Ashley did a great job ! Looks Ashley need some minor changes in the script

  8. Max says:

    After Windows Creators update you have to re-install the RSAT tools…

  9. jonny says:

    Excellent script. Thanks! Such a time saver.
    I edited the log suffix for uninstalls from .log to .evt since the log produced by wusa.exe is binary and can then be opened by event viewer

  10. Daniel Petcher says: offers downloads of the new RSAT tools AFTER update 1709

    1. Steve Sheldon says:

      Good info on the 1709 update needing a re-install of RSAT. My machine was recently updated and my scripts started failing. This is why.

  11. Andy_Mcrae says:

    Thanks for the informations. Helps

Comments are closed.

Skip to main content