Today, I have some free time and I want to post a Powershell script related to the SPN (Service PrinicpalName).
As you probably know that in an Active Directory infrastructure, SPNs should be unique but time to time, you might have duplicates SPN in your environment. Because I’m working on automating a bunch of Active Directory tasks using powershell, I was about to write a powershell function that would check for Duplicate SPNs. I’ve started my work and then found out that another guy would have created similar Powershell script (look here)
After some tests in real production environment, we noticed that the script was using a lot of CPU/memory resources. So we decided to change the approach and to create a simpler script which will not consume acceptable computer resources. We simply decided to integrate the setspn.exe command line into a Powershell function.
This is the function we have created. You see, really simple and basic…
#—- Using SetSpn.exe to check Duplicate SPN ———-
$SPNResult=Join-Path $strRptFolder “DuplicatesSPN.txt”
$spncmd=”setspn -X -p >$SPNResult”
#—– Call the function to execute the code —-
The script is self-explanatory. Using the option -X of setspn.exe utility, you can detect duplicates SPN within your infrastructure. Using the command line utility, the process is much more faster than simply using the powershell script to query Active Directory for duplicate SPN’s
So far, we have decided to use the SetSPN.exe utility to check for duplicate SPNs because simple to use and quite fast. However, we have noticed that the results between the Powershell Script and the command line utility differs time to time. The Powershell Script reports some duplicates SPN when setspn.exe says that no duplicates have been found.
Till Next Time