7be92da2e6
Add CanonicalToOUDN/NormalizeOUTarget so an OU target can be given as a canonical path (domain.com/OU/OU) or a DN, and Client.EnsureOUPath which idempotently creates every OU down the path (parents before children). MoveToOu and group creation now normalize the target and ensure the full OU path instead of only the leaf. Unit-tested (conversion, escaped split) and verified against the test AD: a canonical nested target creates each OU and moves the object; re-running is a no-op. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>