Should PowerShell 7.x ship inbox in Windows? #24340
Replies: 84 comments 160 replies
|
Yes. I write modules that are useful for PC enthusiasts who don't necessarily use PowerShell in their daily lives. It would add unnecessary friction to the user experience if these people had to go out of their way to install PowerShell before using my modules, so I stick to Windows PowerShell features in scripts and .NET standard 2.0 in binary modules. This means I'm essentially stuck in the year 2016 in terms of language features. This might not be so bad in 2024, but what about in 2034 or 2044? In the IT enterprise world it's a similar story where a consultant may want to write some automation tool but because they can't be certain than there's anything higher than PS 5.1 installed in the environment they may opt to use a different tool than PowerShell. |
|
I think we should ask ourselves the opposite question. Is there are good reason to NOT ship it? Everything as far as I'm aware is backward compatible so there isn't a good reason to not ship it. |
|
I've been wondering why it hasn't yet. |
|
This would allow me to develop all of my powershell for powershell 7 across my enterprise without having to worry about installing it on every device across the enterprise. Updates could take place via windows update. Would be so nice. It seems kind of common sense to include it in the OS despite whatever the challenges are. Also, the security benefits of being able to use SSH authentication across the board for all remote powershell authentication would be SO nice. |
|
Yes please 🥺 |
|
One of the biggest hurdles with Powershell is the difficulty in parallel execution. I have done it, but it is nowhere as simple as with Powershell 7. I think this would be an improvement in regard to convenience. I would also point out that the attitude towards Powershell in the DevOps space seems to have shifted quite drastically since the port to Linux. If we had native support for simple parallel execution, it would be that much more of a no-brainer for DevOps folks versus, say, Python. |
|
For me it is interaction with authenticated REST APIs. |
|
yes please! |
|
I should say: Why not? But that is part of the question Sydney Smith (@SydneyhSmith) is asking. 😄 In any case, I'm in favor of making it ship in Windows! Working professionally with it for over a year and except GPO, VMM and a couple other modules I never had any problem with it. Most of the time it's even faster then when I would do it in 5.1. |
|
Yes and get rid of PowerShell ISE and ship Visual Studio Code instead. |
|
Yes please. Here at the company I work for is already provisioning new VMs with PowerShell 7 ship in Windows. |
|
Yes please! My company would never approve of installing PowerShell 7 as an extra product on Windows Server, so I am stuck with version 5.1. And I think a lot of people are in the same situation. Windows (Server) is still the most obvious place where people use PowerShell, and if you only provide a legacy version out of the box, eventually people will stop caring. If you want to keep PowerShell relevant and alive, PowerShell 7 needs to be the default on Windows. |
|
|
At orgs without much ( see any ) shell adoption, it would be nice to have it in box for the small pockets of users who love The main reason I'm able to leverage winrm is because it comes in box with it enabled on modern Windows. I'd be stuck with If shipping in-box would slow down dev, then I think I would rather have it outside and fight the battle of deploying |
|
Please have it preinstalled and be future thinking. Microsoft Graph module, Az module, SecretManagement module, etc. all heavily favor PS7 and in the corporate world, there are often tons of hoops to jump through to get it installed. Then constantly discovering various servers don't have it installed means when I'm trying to do some daily work, but my scripts don't work, another hold-up to get approval to get it installed...over and over. The future is clear that developers are targeting PS7 for modules. The risk/confusion of having 5.1 and 7 side-by-side should be irrelevant because anyone working with PS should know the difference and it would be a "growing pain" at worst. A good case study is all of the Server 2012 R2 machines out there that don't come with PS 5.1. To this day, at various customers, I'm STILL installing it all over the place after wondering why my scripts don't work. Don't make me do that again for PS7. |
|
This is MS fault. They own the ecosystem, yet they can't/won't make things compatable across versions. When a language abandons the features that made it useful and can't get departments in their own organization to use it, it is a problem. This is where we are. All I hear are excuses about dotnetcore, win32, or COM or somethingelse left out, and noone is filling those gaps, yet they ship in modern win11,2025. Then the azure and graph modules break all the existing usages and the language has run amok. The versioning and inclusion is the least of it. It is turning into a fail. The community can't right the ship. I have changed my views on this and think powershell 5, cscript, dotnet, should all be removed and be provided external only. The c++ runtimes got it half right. |
|
Hi Sydney Smith (@SydneyhSmith), wondering if the survey is still ongoing? Are there any conclusions/actions at this point? |
|
I think it should ship with Windows. I use PowerShell on Linux, and this affects my use in an indirect but important way. If my friend has some batch operation that they want to automate, and I want to write a script to do it for them, but they are on Windows and I am on Linux, I have to worry about whether or not the features I am using are in PowerShell 5. I have no way to directly test my scripts in PowerShell 5 on Linux. So this fundamentally serves to split the ecosystem. The divide becomes a double one, between Windows and Linux and 5 and 7. Of course I could tell them to install PowerShell 7, but that gets rid of a lot of the convenience of simply being able to give someone a script that they can run using a Windows feature. If distinguishing PowerShell 5 scripts from PowerShell 7 ones becomes an issue, I would gladly start adding some kind of shebang-like annotation to the top of my scripts if it meant that PowerShell 7 could become universally available. |
|
This is a highly debated topic, with many opinions. I will contribute with my own:
|
|
This is not the first time MS had to deal with this. Powershell 2.0, which came out in 2009 was just recently removed and shipped side by side with powershell 5.0
I my opinion the solution is dead simple. Ship both Pwsh and Powershell 5 with Windows preferably with Powershell 5.0 being marked as an optional component.
That way if a business has a need for Powershell 5 they have an option without holding back the whole ecosystem.
|
|
Yes, yes, a thousand times yes. I'm currently going through the pains of setting up an IIS server just so that I can have a v2 NuGet index for my custom powershell module repository. I hate it! There are so many, better, solutions but they all only support v3! Here I am with thousands of computers still squatting on a waaaaay more outdated PS5.1 and have to jump through hoops to support some archaic feature. Install-Module and PSResource function perfectly fine side-to-side! Why can't you just ship both and end my misery!? |
|
I really wish PowerShell 7 was bundled with Windows (and updated with Windows Update). Not sure if it's been mentioned before, but there is a useful case for CI machines too. We're providing wrapper scripts for our build tool that automatically install it (a bit like Inside the script, we need locking / downloading / archive extracting, and for this we delegate to powershell. Now we have to limit ourselves to Windows PowerShell 5.1 (and thus have to jump through some hoops to avoid the very slow Installing software might be just a |
|
We've just hit an issue where a customer is using PowerShell with We don't mind whether PS7 is set as the default but if its not then please go back and merge/reimplement some of these bug fixes into 5. Whatever the default is for windows installs should be supported and that should include not making corrupt archives. |
|
The fact that PowerShell 5.1 ships with Windows 11, including:
Is absolutely frustrating. https://learn.microsoft.com/en-us/powershell/scripting/install/powershell-support-lifecycle?view=powershell-5.1 doesn't even mention Windows 11, as if the PowerShell team either doesn't think it's included in Windows 11 or doesn't think Windows 11 exists. PowerShell 7.0.0 was released Mar 4, 2020. And Windows 11 was released October 5, 2021. I understand that software freezes at some point (I used to work on major software products), but that's over 18 months between a component release and a platform release. If PowerShell 7.x won't be shippable in Windows 11, then could someone please fix |
|
Why is there normal powershell and then powershell 7? Powershell 7 seams to work fine and has other advantages over version 5 which I think is normal powershell. Such as better display rendering of fast moving text. I would just drop the old powershell then integrate the latest version so we have just powershell |
|
As appears from several comments, the following question is closely related to the issue question: Is Windows PowerShell
|
| Listing | Start Date | Retirement Date |
|---|---|---|
| PowerShell | Jan 20, 2018 | In Support |
PowerShell? presumably Windows PowerShell (5.1), but don't even bother to get this changed, it will never happen in my experience😔)
- further in the PowerShell Support Lifecycle document where there is a clear section for PowerShell end-of-support dates there is only a Windows PowerShell release history in the bottom that actually only states what is not supported:
Microsoft no longer supports Windows PowerShell versions lower than 5.1.
So let me ask again:
Is Windows PowerShell 5.1 supported?
Despite what has written, let's examining the reality:
Microsoft has build a lot on top of Windows PowerShell 5.1 making users and organizations quiet depending of it.
But that isn't the same as supporting it.
- Take for example an issue as the one commented by Josh Soref (@jsoref) or Windows PowerShell
5.1(resolution-external) issues along with No Category for Windows PowerShell 5.1 Feedback (Feedback Hub) #26366, Unlock-Bitlocker/Lock-Bitlocker excessive confirmation queries #25878,Set-ScheduledTaskshouldn't accept a plain text Password #16502,[AllowEmptyString()]for-DescriptioninSet-LocalGroup/Set-LocalUser#16049 ... - Ever tried to give feedback to Microsoft on Windows PowerShell (
5.1) following the path:
New Issue --> Windows PowerShell --> Microsoft Feedback hub- And if you did, did you get any valuable response? From the fact that Windows PowerShell (
5.1) didn't change for more than 10 years, it appears that nobody did any enhancement request worth to implement😕
- And if you did, did you get any valuable response? From the fact that Windows PowerShell (
- What about everything learned in PowerShell (core), nothing appears to be worth to be implemented into a Windows PowerShell branch in terms of bug fixes, enhancements and performance😕?
- What about documentation updates for Windows PowerShell (
5.1)? afaik, there isn't any, all helpful articles come from communities as StackOverflow but not Microsoft. - What about security updates?
Take e.g. theSend-MailMessagecmdlet:
⚠️ WarningThe
Send-MailMessagecmdlet is obsolete. This cmdlet doesn't guarantee secure connections to SMTP servers. While there is no immediate replacement available in PowerShell, we recommend you do not useSend-MailMessage. For more information, see Platform Compatibility note DE0005.
Wouldn't it be time to remove this cmdlet from Windows PowerShell in the next Windows update and ship an alternative (Outlook?) version or at least a version that warns the script author?
so, again:
Is Windows PowerShell 5.1 supported?
Maybe on paper but IMHO, in reality, the answer is No which should be the reason that PowerShell 7.x should ship inbox in Windows
|
PowerShell 7 supports running sequential commands with |
|
I'm the lead developer for PSAppDeployToolkit, an application deployment framework used with Intune, ConfigMgr, Workspace ONE, and other products. It's job is to facilitate the consistent, reliable, logged deployment of applications, with optional functionality to close processes that'd otherwise block a success installation, allow user deferrals, and more. The problem we experience is that since we're a product used to deploy applications, we can only leverage the capabilities Windows offers out of the box, which is Windows PowerShell 5.1. While we do support the use of PowerShell 7, we have to develop our product in a way where 10 years of PowerShell improvements are eschewed for the sake of compatibility because our project needs to work without any user-installable pre-requisites. Further to this, our project is further complicated by the fact we must only ship .NET Framework DLL files (currently targeting the net472 TFM) because of the size to include both. This leads to varying compatibility issues that I have to skirt around with polyfills and/or reflection to handle situtations that work under .NET Framework but not under .NET 8/9/10. Some packages like Having PowerShell 7 included would allow us to significantly enhance our product and what we offer to customers. Some of these would be:
This one's likely a tall order, but as part of this though, I'd like to see |
|
Mitch Richters (@mjr4077au) — thank you for taking the time to write this up so clearly. This is exactly the kind of real-world perspective that helps us understand what's actually at stake for the people building on PowerShell every day. For folks following this thread: please keep sharing your scenarios. The more we hear about how the current reality is affecting your work, the better picture we have of what needs to change. |
|
My thoughts, finding this discussion for the first time today. Generally in favour, but have questions/concerns I'd hope would be addressed to not open up new problems with shipping it by default.
|
Uh oh!
There was an error while loading. Please reload this page.
Collecting user input/scenarios as to the challenges of not having PowerShell 7 ship in Windows and reasons why or why not PowerShell 7.x should ship in Windows.
All reactions