We’re focusing Microsoft Graph PowerShell on the platform where we can give you the most reliable, capable, and well-maintained experience: PowerShell 7.x and later. Built on modern .NET, PowerShell 7.x resolves many of the underlying assembly-loading and dependency issues that affect Windows PowerShell 5.x today. Concentrating our engineering there means faster fixes, quicker delivery of new features, and fewer platform-specific failures for you.
To make that focus possible, today we’re announcing that Windows PowerShell 5.x is entering a 12-month retirement period for the Microsoft Graph PowerShell modules. Over this period, we’ll wind down maintenance on 5.x and direct new investment, development, and validation to PowerShell 7.x and later. The v2.x modules will keep working on Windows PowerShell 5.1 throughout — this is a planned transition, not a switch we’re flipping today.
Retirement refers to maintenance, not compatibility. During the retirement period the v2.x modules will continue to declare compatibility with Windows PowerShell 5.1 and, in most cases, keep functioning in existing environments just as they do now. What changes is where our engineering effort goes: new features, bug fixes, and validation will target PowerShell 7.x, and issues specific to Windows PowerShell 5.x will no longer be actively investigated or fixed.
Timeline
- Now through the next ~12 months (retirement period). The v2.x modules remain compatible with Windows PowerShell 5.1 and will receive security fixes as required. Maintenance for PowerShell 5.x compatibility winds down, while active development, validation, and investment move to PowerShell 7.x and later — giving you time to plan and complete your migration without disruption.
- In Q4 CY 2026 a new major version of Microsoft Graph PowerShell will be released. With the release of v3.0.0 no new versions of v2 will be published unless security fixes are required. V3.x modules will not have explicit support for Windows PowerShell 5.x and are only supported for PowerShell 7.x.
Call to Action
If you’re still on Windows PowerShell 5.1, begin planning your move to PowerShell 7.x now. It’s the recommended and only maintained platform going forward, and it delivers the more reliable experience described above.
We appreciate our customers’ partnership and understanding as we make this transition and continue investing in the future of Microsoft Graph PowerShell.
While I agree that PSCore is the way to go and this is a good choice, PS 5 isn't going anywhere and is necessary in quite a few cases. As much as MS has harped on getting people to use PSCore, a lot of MS-provided PS modules don't work with it. IIS support via IISAdministration is a mess and doesn't have anywhere near the functionality as WebAdministraiton did. So if you need to admin an IIS configuration then you really have to use PS 5. Scheduled tasks are in a similar boat given that the core scheduled task cmdlets don't...
“During the retirement period the v2.x modules will continue to declare compatibility with Windows PowerShell 5.1 and, in most cases, keep functioning in existing environments just as they do now.”
Could you clarify what happens after the retirement period ends — specifically, will the v2.x modules continue to function on Windows PowerShell 5.1 just as they do now?
Versions v2.36.1 or later will continue to operate. Prior versions will no longer be able to perform interactive authentication. This is a tangentially related change with similar timing. You can read and ask more questions on our GitHub Repo: https://github.com/microsoftgraph/msgraph-sdk-powershell
“PowerShell 7.x resolves many of the underlying assembly-loading and dependency issues that affect Windows PowerShell 5.x today.”
This doesn’t seem to be the reality as Graph SDK Modules frequently conflict with Teams or Exchange modules loaded into the same session if not loaded in specific changeable orders which renders using #Requires statements problematic.
I hope that V3 will be implementing Application Load Contexts to resolve this.
v2 already uses Assembly Load Contexts in PSCore. Unfortunately, they are not a perfect solution. This is a continuing area of investment and improvement for us.
This is good, but I feel like Microsoft as a whole needs to take a step back and reevaluate holistically. If PowerShell 7 is going to be the de facto method for connecting to Microsoft Cloud services, then maybe Server OS and, by extension, Windows OS should include it by default, stop packaging PowerShell 5.1 as the shell, and not treat PowerShell 7 as a third-party add-in.
I know that Windows PowerShell has some architectural limitations, so this isn’t a surprise. I very much hope that this leads to some needed collaboration between the teams for the Graph, ExchangeOnline, Teams, and Azure modules.
Getting those modules to work together has been very painful for a long time.
We’re on it.
Does this have any impact on the information posted here regarding all versions prior to v2.36.1 no longer functioning? https://github.com/microsoftgraph/msgraph-sdk-powershell/issues/3629
Specifically, trying to understand if ~12 months is also the runway for us to plan migrate away from those versions to the latest version.
No, this is an independent announcement and your migration to version 2.36.1 or later should be performed sooner rather than later. To clarify a little more when we make that change authentication for those versions will cease to work if you’re using an Interactive Browser Credential. App Only and Device Code Flow should continue to work.
It would be interesting to read about incoming changes in v3.0. Do you plan to blog about what’s coming next?
Yes, as we approach public alpha and beta releases, we will ship a blog post or two for increased visibility
Our intent for v3.0 is for it to be minimally disruptive. Part of our validation work there is to ensure that existing cmdlet usages work without change. Now, the caveat is that in some cases we will intentionally diverge, these will be carefully documented to help migration.
Largely 3.0 is about changing the tooling we’re using under the hood to generate the cmdlets, we’re working on this branch if you’re curious https://github.com/microsoftgraph/msgraph-sdk-powershell/tree/powershell-v3