SpnManager/why-not-setspn
Kerberos broken now? →
why not just setspn

setspn is the right tool for one SPN on one account.

It ships with Windows, it is scriptable, it has a forest-wide duplicate check, and every AD administrator already knows it. SpnManager wraps it where that makes sense, and exists for what it does not do.

what setspn does well

It is already there

No install, no licence, no approval. On a domain controller it is one command away.

-X finds duplicates

The forest-wide duplicate scan is the single most useful thing in the tool, and SpnManager's duplicate audit wraps it rather than reimplementing it.

-S refuses duplicates

Adding with -S checks for an existing holder first. That is a real safety feature and the right default.

It is scriptable

A setspn bundle is exactly what SpnManager hands to an AD team without write rights, because they can read it and run it.


what it does not do
setspnSpnManager
Knows what SPN a service needsNo. You type the string.Sense reads the service and builds the expected set: port from the registry, host header from IIS, instance name for SSAS.
Knows which account should hold itNo. You pick the account.Resolves the account the service actually runs as from SCM, IIS, or config, and flags machine-versus-service mismatches.
Checks your rights before writingFails at write time.Preflight ACL check in Test; a plan you cannot execute is reported as such.
Tells you whether Kerberos now worksNo. A successful write is the end.Proof stage reads the negotiated mechanism from a client, before and after, under a negative control.
Handles keytab services honestlyWrites the AD side; the service stays broken.Refuses to write; emits the operator runbook for the far side.
Audits delegation, enc-types, driftNo.Six audit providers.
Reports what it could not reachNot applicable.Coverage ledger; unreached is its own disposition.
Records provenanceNot by itself.Module version, commit, run ID, timestamp on every action.

when to use which

One SPN, one account, you know both, and you have rights: use setspn -S. A forest, a mixed estate, a service you did not build, or a requirement to prove the outcome: that is what SpnManager is for. The two are not in competition; SpnManager's hand-off output is setspn.