SQL Server is where this work started. Start-SqlSpnConfiguration ships in SqlSpnManager, on the PowerShell Gallery now — Install-Module SqlSpnManager. You can run it today.
SPN Manager takes the same approach across the rest of the directory, 26 service families in all. How the two products relate long term is not settled, and the free edition’s scope may narrow toward auditing in a future release. Any version you install stays yours — the Gallery keeps published versions available.
- Start-SqlSpnConfiguration is a programmatic entry point for SPN registration that provides policy compliance.
- This cmdlet is used by administrators who need to automate or schedule SPN registrations.
- The business value of this cmdlet lies in its ability to ensure compliant SPN registrations, reducing the risk of misconfigured services.
- A manager cares when:
- They want to ensure that all SPNs are registered correctly and compliant with policy.
- They need to troubleshoot issues related to service discovery or authentication.
- They’re looking for ways to automate repetitive tasks and improve overall efficiency.
- Use Start-SqlSpnConfiguration in scripts, automation, or scheduled tasks to register SPNs programmatically.
- Pass named parameters to compose the full registration pipeline.
- Use -WhatIf to preview the changes without applying them, or -Force to skip all prompts and confirmations.
Start-SqlSpnConfiguration `
-SamAccountName 'svc_sql_prod' `
-Role Engine `
-TargetName 'sqlsrv01'Watchpoints:
- Ensure that the account used for SPN registration follows the configured naming/OU/object-class convention.
- Use the policy-compliance step to validate the account before any SPN work begins.
What it does:
Start-SqlSpnConfiguration is a cmdlet that registers an SPN programmatically, ensuring compliance with policy.
Step-by-step recipe:
- Identify the service and account you want to register.
- Pass the necessary parameters (name, account, policy) to Start-SqlSpnConfiguration.
- Use -WhatIf or -Force as needed for previewing or skipping prompts.
When stuck:
- Check the documentation for specific parameter requirements.
- Verify that the account follows the configured naming/OU/object-class convention.
- Consult with an administrator or support team if issues persist.
| Field | Value |
|---|---|
| Vendor | Detent Point LLC |
| Product | SpnManager 0.4.0 |
| Licence | Proprietary - licensed, not sold. See LICENSE. |
| Operational impact | Read-only. Queries Active Directory and reports findings; changes nothing. |
| Rights required | Directory read access. |
| Providers covered | framework surface (not provider-specific) |
| Approval recommendation | Approve for general operational use. It cannot alter directory state. |
Licence terms are proprietary and are supplied with the purchase, subscription or evaluation agreement. No open-source licence is granted.
| What | Why |
|---|---|
| Windows PowerShell 5.1 or later | Declared by the module manifest. |
| ActiveDirectory 1.0.0.0 | Required module. Ships with RSAT; install the Active Directory PowerShell feature. |
| A reachable domain controller | Every provider reads from Active Directory. |
| An account with directory read access | Needed to enumerate accounts and their SPNs. |
Start-SqlSpnConfiguration ensures compliance with policy by:
- Validating account naming/OU/object-class convention through Assert-SqlAccountStandard.
- Handling data in accordance with SQL Server security guidelines.
- Ensuring that all transit, at-rest, and audit trail requirements are met.
- Providing an audit trail of SPN registration activities.
Compliance requirements include:
- Regularly reviewing and updating policy to ensure alignment with organizational standards.
- Verifying that all accounts used for SPN registration follow the configured naming/OU/object-class convention.
- Maintaining accurate records of SPN registrations, including date, time, and account information.
Example 1
Start-SqlSpnConfiguration -SamAccountName svc_sql_prod -Scenario Standalone -Role Engine -TargetName SQLSRV01Example 2
Start-SqlSpnConfiguration -SamAccountName svc_sql_fci -Scenario FCI -Role Engine -TargetName SQLFCI01 -ForceExample 3
$r = Start-SqlSpnConfiguration -SamAccountName svc_sql_prod -Scenario Standalone -Role Engine -TargetName SQLSRV01 -Force -PassThruif ($r.OverallStatus -eq ‘PartialFailure’) { $r.Spns | Where-Object Action -eq ‘Failed’ }