Objective
Rotate the password of a Windows service account without causing an outage by inventorying services, scheduled tasks, IIS pools, and applications, coordinating the change, validating dependent services, and checking for failed logons afterward.
Prerequisites
- The required names/SANs, certificate purpose, trust chain and private-key location.
- A rollback method for the previous binding, policy or boot state.
- Administrative access appropriate to the system being changed or diagnosed.
- A clearly identified scope: affected users, systems, addresses, services and the time of the observed problem.
- A maintenance or test window when the procedure can affect production traffic or availability.
- A copy of the current configuration or other recovery material before any irreversible action.
Step-by-step procedure
Establish the baseline and scope
Before changing anything, reproduce the issue or document the requested change on a representative system. Record the affected users or services, exact time, current configuration, recent changes and a known-good comparison point. This baseline is the reference used to decide whether each later step improves the situation.
- The scope and current state are documented well enough to reproduce or verify the procedure.
Inventorying services
Implement this requirement in a controlled scope: inventorying services. Capture the previous value or configuration first, make the smallest change that satisfies the design, and validate the effective state rather than assuming that a saved setting is active. If the expected result is not obtained, stop, restore the previous state, and reassess before expanding the change.
- Evidence for this area is explicit, reproducible and consistent with the intended design.
Scheduled tasks
Implement this requirement in a controlled scope: scheduled tasks. Capture the previous value or configuration first, make the smallest change that satisfies the design, and validate the effective state rather than assuming that a saved setting is active. If the expected result is not obtained, stop, restore the previous state, and reassess before expanding the change.
- Evidence for this area is explicit, reproducible and consistent with the intended design.
IIS pools
Implement this requirement in a controlled scope: IIS pools. Capture the previous value or configuration first, make the smallest change that satisfies the design, and validate the effective state rather than assuming that a saved setting is active. If the expected result is not obtained, stop, restore the previous state, and reassess before expanding the change.
- Evidence for this area is explicit, reproducible and consistent with the intended design.
Applications
Implement this requirement in a controlled scope: applications. Capture the previous value or configuration first, make the smallest change that satisfies the design, and validate the effective state rather than assuming that a saved setting is active. If the expected result is not obtained, stop, restore the previous state, and reassess before expanding the change.
- Evidence for this area is explicit, reproducible and consistent with the intended design.
Coordinating the change
Implement this requirement in a controlled scope: coordinating the change. Capture the previous value or configuration first, make the smallest change that satisfies the design, and validate the effective state rather than assuming that a saved setting is active. If the expected result is not obtained, stop, restore the previous state, and reassess before expanding the change.
- Evidence for this area is explicit, reproducible and consistent with the intended design.
Dependent services
Implement this requirement in a controlled scope: dependent services. Capture the previous value or configuration first, make the smallest change that satisfies the design, and validate the effective state rather than assuming that a saved setting is active. If the expected result is not obtained, stop, restore the previous state, and reassess before expanding the change.
- Evidence for this area is explicit, reproducible and consistent with the intended design.
For failed logons afterward
Implement this requirement in a controlled scope: for failed logons afterward. Capture the previous value or configuration first, make the smallest change that satisfies the design, and validate the effective state rather than assuming that a saved setting is active. If the expected result is not obtained, stop, restore the previous state, and reassess before expanding the change.
- Evidence for this area is explicit, reproducible and consistent with the intended design.
Validate the complete service
Repeat the original user, system or application workflow from the real source and verify the complete result, not only one command or one local check. Confirm that logs and monitoring show the expected behavior and that no temporary debug, bypass, test account, rule or maintenance setting remains enabled.
- The end-to-end service works or the remaining failure is isolated to a clearly identified component.
Technical commands from the original procedure
These technical blocks are preserved byte-for-byte from the historical procedure and kept in their original order. Review names, addresses, paths and parameters before use.
Get-CimInstance Win32_Service | Where-Object StartName -match '<DOMAINECOMPTE>' | Select Name,DisplayName,State,StartMode,StartNameGet-ScheduledTask | Where-Object {$_.Principal.UserId -match '<DOMAINECOMPTE>'} | Select TaskPath,TaskName,@{n='UserId';e={$_.Principal.UserId}}Get-ScheduledTaskInfo -TaskName '<TASK-NAME>' -TaskPath '<TASK-PATH>'Import-Module WebAdministrationGet-ChildItem IIS:AppPools | Select Name,@{n='IdentityType';e={$_.processModel.identityType}},@{n='UserName';e={$_.processModel.userName}}Get-Service | Where-Object Status -eq 'Stopped' | Select Name,DisplayNameGet-WinEvent -FilterHashtable @{LogName='Security';Id=4625;StartTime=(Get-Date).AddHours(-2)} -ErrorAction SilentlyContinue | Select -First 20 TimeCreated,Id,Message$NewPassword = Read-Host 'Nouveau mot de passe' -AsSecureStringSet-ADAccountPassword -Identity '<SERVICE-ACCOUNT>' -Reset -NewPassword $NewPasswordGet-CimInstance Win32_Service | Where-Object StartName -match '<DOMAINECOMPTE>' | Select Name,State,StartNameGet-ScheduledTask | Where-Object {$_.Principal.UserId -match '<DOMAINECOMPTE>'} | Get-ScheduledTaskInfo | Select LastRunTime,LastTaskResult,NextRunTimeGet-WinEvent -FilterHashtable @{LogName='Security';Id=4625;StartTime=(Get-Date).AddHours(-1)} -ErrorAction SilentlyContinue | Where-Object {$_.Message -match '<SERVICE-ACCOUNT>'} | Select TimeCreated,MachineName,MessageValidation
The procedure is validated when:
- The original symptom or change request has been tested end to end.
- The effective configuration matches the intended design and no unexplained error remains in the relevant logs.
- Temporary troubleshooting controls have been removed and monitoring remains normal.
- The result, evidence and any follow-up action are documented.
Rollback
- Restore the configuration, policy, binding, route, credential assignment or service state recorded in the baseline when the change does not meet its success criteria.
- Remove temporary rules, test objects and diagnostic settings that were introduced only for the procedure.
- After rollback, repeat the minimum health checks to confirm that the previous service level has been restored.
Troubleshooting / common errors
- A certificate can be valid but bound to the wrong service, SNI name, key or trust chain.
- For fleet security changes, separate firmware/UEFI readiness from operating-system policy readiness.
- If the result changes between tests, compare source, destination, identity, time and policy context before changing additional settings.
- If a command succeeds but the application still fails, continue at the next protocol or application layer instead of widening access.
- If the expected evidence is missing, verify that logging, auditing and the test path actually cover the failing component.
- If the change does not improve the measured symptom, restore the previous state and reassess the working hypothesis.