Skip to content

PowerShell 6.0 Plan #3046

Closed
Closed

Description

This is a preliminary, WIP roadmap/plan for what we on the @PowerShell/powershell-committee believe needs to be in a PowerShell 6.0 release. We will be iterating on this significantly based on your feedback, as well as potentially shifting internal priorities. The goal is for all line items here to eventually be represented by issues attached to either the 6.0.0 or 6.0.0-beta milestones, so that you anyone can look in and see how far along we are towards a 6.0 release.

I also plan on publishing a blog to break down our plans in more detail sometime soon. In the meantime, please join us on the PowerShell Core Community Call tomorrow @ 9am PST where we'll be talking about this in more detail.

If you believe we're missing something here that's absolutely critical for the 6.0 release, please let us know below in the comments or on our monthly Community Call. Thanks!

[cut] means something we've decided is not required to ship 6.0.0 final and we'll address in a future release (not that it's cut forever)

Documentation

  • Stand up 6.0 reference docset on PowerShell-Docs
  • Figure out story/location for conceptual x-plat content
  • Create a changelog workflow
  • SDK docs via docfx TODO

Packaging, Installation, and Deployment

  • Install-Package PowerShell
    • Windows
    • Nano
    • Linux?
    • macOS?
  • Update-Package PowerShell?
  • Universal Windows packages for each bitness Get to single Windows package #2608
  • Onboard to Microsoft Linux package repositories Repositories #3056
    • RPM
    • DEB
  • Get into major package repositories
    • Ubuntu
    • Red Hat
    • TODO: who else? SLES?
  • Fully automate package building for all platforms

Script/Module Development Experience

  • VS Code features
  • .NET Standard 2.0 story
    • I can write binary modules that target Windows PowerShell and PowerShell Core
    • Timeline public for .NET Standard 2.0
    • Move to .NET Core vNext that supports .NET Standard 2.0
    • Validate that .NET Standard 2.0 supplants the need for a Windows Powershell 6.0 (i.e. based on the FullCLR .NET Framework)
      • Does .NET Framework 4.6.1 work on Windows 7?
    • Move to csproj build? Move build to csproj/msbuild #3140
  • Semantic versioning Complete the SemanticVersion work  #2983
  • Artifact Sharing
    • Gallery supports filtration by platform
    • PowerShellGet supports filtration by platform
    • Gallery supports filtration by Windows PowerShell vs. PowerShell Core
    • PowerShellGet supports filtration by Windows PowerShell vs. PowerShell Core
  • ScriptAnalyzer rules
    • Enumerate rules for supported features/cmdlets on Linux
    • Enumerate rules for supported features/cmdlets on .NET Core
      • Analysis based on using assembly, Add-Type, etc.

Scenarios

  • I can use PowerShell on major Linux distros, macOS and Windows
  • I can know how many people are using PowerShell (incl. version and platform) and how the Community is growing​
  • I can use PowerShell on any platform to manage Azure
  • I can develop cmdlets for both Windows PowerShell and PowerShell Core using .NET Standard 2.0
  • I can remote between all OS platforms using any supported remoting protocol (PSRP over SSH or WSMan)
  • I can install/upgrade PowerShell using native package management utilities on any Mac/Linux platform
  • I can use semantic versioning for modules with PowerShellGet and the Gallery​
  • I can develop a CLI experience using PowerShell on any platform to manage cloud instances
  • Finish top UserVoice delighters (SemVer, Build verb, Get-Service improvements, loose manifest validation)​

Activity

  1. added this to the milestone on Jan 25, 2017
  2. Jaykul commented on Jan 26, 2017

    @Jaykul
    Contributor

    I can write binary modules that target Windows PowerShell and PowerShell Core

    This works already -- targeting .NET Standard 1.6. The hard part is loading OS-specific assemblies -- do we need /lib/{OS}/*.dll automatic loading of RequiredAssemblies?

  3. pcgeek86 commented on Jan 26, 2017

    @pcgeek86

    WinRM client with Kerberos and client certificate authentication, from Linux and Mac OS X is something I'd consider essential. We're looking for the ability to deploy remote PowerShell code to Windows systems from non-Windows systems, via Docker containers.

    Would NTLM cover this scenario in a secure manner? I'm not clear on the pros / cons of NTLM vs. Kerberos, but either way, I think client certificate authentication would be a separate topic.

    LMK

    Cheers,
    Trevor Sullivan

  4. fabiendibot commented on Jan 26, 2017

    @fabiendibot

    I totally agree what Trevor Sullivan (@pcgeek86) is saying, targetting WinRM from Linux is a totally unfriendly scenario and NTLM isn't possible with many customers.
    There is a community YAML module but could it be possible to integrate YAML cmdlets the same ways as ConvertTo/ConvertFrom-* exists already for CSV/XML/JSON ?

  5. joeyaiello commented on Jan 26, 2017

    @joeyaiello
    ContributorAuthor

    Trevor Sullivan (@pcgeek86) Fabien Dibot (@fabiendibot) good to hear. I then pose the question: are you okay AD-joining your Linux (or Mac) boxes? Or do you expect to be manually handling the certs?

    Better yet, what's the blocker for you using PSRP over SSH from Mac/Linux to Windows? Do you have some sort of cert solution that's simpler than public/private key pairs?

  6. pcgeek86 commented on Jan 27, 2017

    @pcgeek86

    We've got a separate certificate publishing system in place already, so that's taken care of.

    I'll have to see how PowerShell Remoting over SSH works before I can comment further on that scenario. As of this point, I'm not aware of any functional implementation of it. The solution would need to work on down-level Windows operating systems though.

  7. pcgeek86 commented on Jan 27, 2017

    @pcgeek86

    I'd also add some emphasis around building binary modules surrounding .NET Standard. I'm glad to see this was added in there. Perhaps we should add something around loading .NET assemblies into PowerShell, and calling into them? I know a lot has changed in .NET Core, with respect to AppDomains, reflection, and so on ... I think this area could use some attention.

  8. whatevergeek commented on Jan 27, 2017

    @whatevergeek

    i agree to both Joel Bennett (@Jaykul) and Trevor Sullivan (@pcgeek86)
    a powershell gac or library folder sort of would be good...
    this will help us manage assemblies that our corresponding modules are using/installing...
    i think node/python also have this concept...

  9. fabiendibot commented on Jan 27, 2017

    @fabiendibot

    Joey Aiello (@joeyaiello) We configure kerberos with our Linux boxes for some scenarios (SQL Server connections mostly). For me Win32-SSH is not production ready so i haven't looked at it for now.

  10. iSazonov commented on Jan 29, 2017

    @iSazonov
    Collaborator

    Does .NET Framework 4.6.1 work on Windows 7?

    Yes
    https://www.microsoft.com/en-us/download/details.aspx?id=49981&e6b34bbe-475b-1abd-2c51-b5034bcdd6d2=True

    Supported Operating Systems:
    •Windows 7 SP1 (x86 and x64)
    •Windows 8 (x86 and x64)
    •Windows 8.1 (x86 and x64)
    •Windows 10
    •Windows Server 2008 R2 SP1 (x64)
    •Windows Server 2012 (x64)
    •Windows Server 2012 R2 (x64)

  11. fMichaleczek commented on Feb 1, 2017

    @fMichaleczek
    Contributor

    What's about the Class Features ?
    Interface implementation is still missing.

    This was the roadmap at the end of 2014 :
    alt text

    PowerShell need to be SOLID at 6.0 (https://en.wikipedia.org/wiki/SOLID_(object-oriented_design) )

    Language area need more attention, particularly these issues :
    #2223
    #2642
    #2225
    #2217

    Thank you !

  12. iSazonov commented on Feb 1, 2017

    @iSazonov
    Collaborator

    Perhaps it would be useful to draw up this roadmap by using the GitHub Project(s).

  13. SteveL-MSFT commented on Feb 1, 2017

    @SteveL-MSFT
    Member

    Ilya (@iSazonov) we considered using GitHub Projects, but decided (for now) it would be easier to track progress as checkboxes in an issue

    At this time, our thinking is to invest in the developer experience (class improvements as well as things like bindings to other languages, authoring cmdlets in other languages, etc...) post 6.0 rather than continuing to add features into 6.0.

  14. 45 remaining items

  15. SteveL-MSFT commented on Sep 6, 2017

    @SteveL-MSFT
    Member

    Did some updates to the list above on what is closed/completed and what was cut out of 6.0.0 and will likely land in 6.1.0 instead

  16. erichiller commented on Nov 11, 2017

    @erichiller

    Are there plans to add comment support (or at least ignore them) in the list for ConvertFrom-Json?

  17. SteveL-MSFT commented on Nov 11, 2017

    @SteveL-MSFT
    Member

    Eric Hiller (@erichiller) please open a new issue, we can consider for 6.1.0

  18. modified the milestones: 6.0.0-GA, on Jan 11, 2018
  19. VGerris commented on Mar 15, 2018

    @VGerris

    Just include Kerberos support please (and WinRM perhaps too) then we look at this again.

  20. SteveL-MSFT commented on Mar 16, 2018

    @SteveL-MSFT
    Member

    OpenMinded (@VGerris) if by WinRM you mean WSMan, that support is already included. There is experimental Kerberos support for WSMan on non-Windows, although it's overly complex currently to get it working.

  21. VGerris commented on Mar 19, 2018

    @VGerris

    No I mean Kerberos and WinRM just like I wrote. Please focus on getting that supported, so one doesn't have to rely on third party scripts. What we basically want is a way to efficiently monitor a Windows machine via an agentless solution and to be able to run remote commands in a secure manner. It's clear from the thread this is a main feature on the rank of interests, right? Thank you.

  22. SteveL-MSFT commented on Mar 19, 2018

    @SteveL-MSFT
    Member

    OpenMinded (@VGerris) I don't understand what you mean by WinRM then since that is supported on Windows (and works already with PSCore6) and WinRM is a Windows-only feature (Windows Remote Management). WSMan is the protocol that WinRM implements.

  23. bergmeister commented on Mar 20, 2018

    @bergmeister
    Contributor

    The following architecture diagram from here might help to understand WinRm-WSMan:
    image

  24. joeyaiello commented on Mar 29, 2018

    @joeyaiello
    ContributorAuthor

    I understand a little better why this diagram is drawn the way it is when I looked at the blog for it, but it's a little misleading. Basic way to think about it is that WSMan is the protocol/standard (short for WS-Management) and WinRM is the implementation of that protocol as a service in Windows.

    OpenMinded (@VGerris) as Steve Lee (@SteveL-MSFT) said, what you're talking about can technically work, but it's extremely difficult to configure and it requires that your Linux machine is AD domain-joined (which is also difficult to pull off). For those reasons, we don't currently formally support that scenario.

    However, WSMan based remoting is not agentless. You still have to run the WinRM service on your Windows machine: that's an agent. In the next release of Windows 10 and Windows Server, OpenSSH itself will be available as a supported feature-on-demand, so you'll have first-party, inbox support for SSH-based remoting as a peer to WSMan-based remoting.

  25. joeyaiello commented on Mar 29, 2018

    @joeyaiello
    ContributorAuthor

    I'm also closing this issue due to it having outlived it's usefulness. We should continue tracking this work in the issues that have been created. If you're passionate about something here that doesn't have an issue, please open one so we can track it there.

    I also plan on fixing up Projects at some point, I know that's in somewhat of a busted state right now. Sorry about that, folks....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

Issue-Metaan issue used to track multiple issues

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions