Summary
You started this module with an estate and a vague intention. You're ending it with a classified inventory and a path assigned to every row.
What you did
- Justified the migration in operational terms: Windows PowerShell 5.1 is in maintenance mode, the LCM isn't coming to PowerShell 7, new investment lands in Microsoft DSC, and cross-platform is table stakes. You also named the situations where waiting is the right call.
- Classified the four artifact types — configuration scripts, compiled MOFs, script-based resources, class-based resources — and learned that each migrates differently.
- Built a migration inventory by joining the classic
Get-DscResourceview with both adapter views, so that the gap between them becomes a concrete list rather than a suspicion. - Created the Bindery legacy estate and applied it under the LCM, establishing the baseline that every migration path must reproduce.
- Assigned a path to each artifact using a decision flow that starts with "is it still used?" and ends with the four signals that justify a native rewrite.
Key takeaways
The inventory is the deliverable. A migration without one is a series of surprises.
- The 5.1 adapter discovers script-based and class-based resources. The PowerShell 7+ adapter discovers class-based only. That single asymmetry drives most migration decisions.
SuggestedPathfrom an inventory script is a starting point, not a verdict. Ownership, usage, and platform plans override it.- Path A and Path B move the orchestration layer without touching resource code. That decoupling is what makes the deeper rewrites safe to do incrementally.
- Module path confusion between hosts causes more false "broken resource" reports than any other single issue. Check
$env:PSModulePathin both hosts first.
Command reference
| Command | Purpose |
|---|---|
Get-DscResource | Select-Object Name, ModuleName, ImplementationDetail |
Classic enumeration; run in Windows PowerShell 5.1 |
dsc resource list --adapter Microsoft.Adapter/WindowsPowerShell |
What the 5.1 adapter can discover |
dsc resource list --adapter Microsoft.Adapter/PowerShell |
What the PowerShell 7+ adapter can discover |
dsc resource list --adapter <name> --output-format json |
Machine-readable form for inventory scripts |
Test-DscConfiguration -Detailed |
Confirm the LCM baseline before migrating |
Learn more
- The Microsoft DSC Handbook, Chapter 11 — the full written treatment of this material
- The Microsoft DSC Handbook, Chapter 6 — how the PowerShell adapters work internally
- Microsoft DSC documentation
Next module
You know what you own and where each piece is going. Module 2 walks all four paths against the Bindery estate, starting with the least invasive one: translating a Configuration script into a configuration document while the resource code underneath stays byte-for-byte identical.
> EOF