Adding Active Directory PowerShell modules to Windows on ARM

So I have a machine that is using Windows on ARM, and for whatever insane reason, Microsoft hasn’t released RSAT tools for Windows 11 on ARM. I say it’s insane because I am aware of the other tools that exist (Configuration Manager, WAC) but I make heavy use of PowerShell, and they don’t include any of the PowerShell modules with Configuration Manager, and WAC doesn’t fit the use case for including them. So, off I went on a mission to get the modules out of a x64 machine that I knew would likely be compatible. I’m posting below what files I had to get and where I ended up putting them for anyone else with this issue.

You need to get the ActiveDirectory module installed onto an x64 machine first, and the easiest way to do that is either add it via “Features on Demand” or, (and my favorite way….)

Once the tools are installed, there will be a file and a folder you need to copy out of the x64 machine. I don’t know how often (if at all) the files are updated, so you may be able to just make an archive and back it all up for future use. For reference the machine I copied from was a Windows 10 x64 Professional installation that was copied to a Windows 11 23H2 Build 22631 VM without issue. (If I do encounter any issues, I’ll update this post).

The Active Directory module folder is located at C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ActiveDirectory and you just need to copy the whole thing to the same directory on the target machine.

The file is name Microsoft.ActiveDirectory.Management.dll and the folder it was located in didn’t seem to be a standard or consistent name so what I did was search from the root of the Windows directory and copied it out of the WinSXS folder. I copied it to the Modules\ActiveDirectory folder mentioned above. The file was 1.1Mb in size, and it did have a companion file called Microsoft.ActiveDirectory.Management.resources.dll that was under C:\Windows\System32\en that I also copied and put in the exact place I copied it from on the target machine.

The reason I put the .dll into the Modules folder is because it was complaining it couldn’t find it and I wasn’t sure if trying to recreate the original folder under WinSXS was a wise decision on the target machine. It was able to use it once I had it in the Modules folder and after a restart of PowerShell. The main thing is that my scripts all appear to be working thus far, so mission accomplished. All I have tested currently are read-only commands since I don’t want to damage our systems here, so I’ll do some limited testing on my home environment when I have a chance.

I can’t say this would work for other RSAT modules, or even this one in its entirety since some of the code is (according to my limited internet research) still x86 based and in theory won’t work on some ARM chips that are x64 only. However, my testing with an M1 MacBook Air using VMWare Fusion has shown as stated limited success, despite a Reddit post stating that it wouldn’t work because the Mac is ARM64 only. So the takeaway here is “Your Mileage May Vary”.

In case people need a list, here are the instructions in that format.

  1. Copy C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ActiveDirectory folder to the same location on target machine.
  2. Search for Microsoft.ActiveDirectory.Management and copy the Microsoft.ActiveDirectory.Management.dll to the C:\Windows\System32\WindowsPowerShell\v1.0\Modules\ActiveDirectory folder on the target machine.
  3. Copy Microsoft.ActiveDirectory.Management.resources.dll from C:\Windows\System32\en to the same location on the target machine.
  4. If you had PowerShell open, close it and reopen to test that the module is loading as expected.
  5. Profit?

Addendum:
I thought I had this set to publish a long time ago… as in back in January 2024. Oops. As far as I can tell, still valid.

Leave a Reply

Your email address will not be published. Required fields are marked *