-
Notifications
You must be signed in to change notification settings - Fork 7.8k
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)
- Everything in the 6.0.0-HighPriority milestone
- Test coverage
- Identified test gaps fixed
- Un-hit code coverage analyzed and understood
- start here
- Cross-platform, cross-machine remoting tests Cross-plat remoting tests need to be available for PowerShell Core #2436
- https://httpbin.org/ is unreliable for web requests testing Tests should not rely on external websites which lead to random failures #2504
- sudo support
-
sudo <native command>
should work from within PowerShell - [cut]
sudo <PowerShell cmdlet>
should work from within PowerShell Support sudo <PowerShell cmdlet> #3232 - [cut] Misc
sudo
bugfixes- [cut] sudo command does not work in remote session to Linux machine sudo command does not work in remote session to Linux machine #1527
-
- Native globbing support Implement shell globbing #954
- Jobs
-
Start-Job
Investigate why Start-Job fails #452 - Other
*-Job
cmdlets Provide additional tests for the *-Job cmdlets #3110 - [cut] Job control (bg, fg with
&
) Implement the use of&
to background a command #716- [cut] Ctrl+Z support Support for Ctrl+Z #3229
- bg jobs Fix Background Jobs in *nix and Windows #1972
-
- Native/binary pipeline support Improve pipeline for native commands #559 Native pipe #2450
- Figure out aliases Figure out aliases #929
- Other cross-platform usability issues
- Filesystem-specific case sensitivity File extension and path checks need to take into account case-sensitive file systems #3218
- Cross-platform encoding usability Resolve UTF-8, UTF-16, ASCII inconsistencies #707
- Fix
screen
issues 'screen' is incompatible with PowerShell #2364
- "Cloud-ready"
- awesome
ConvertFrom/To-Json
- ConvertFrom-Json does not respect -ErrorAction ConvertFrom-Json does not respect -ErrorAction #2860
- Use prettier formatting for ConvertTo-Json Use prettier formatting for ConvertTo-Json #2736
- Convertto-Json and url encoding ConvertTo-Json and URL encoding #2632
- ConvertFrom-Json and ConvertTo-Json eat the one object array ConvertFrom-Json and ConvertTo-Json eat the one object array #2448
- [cut] ConvertFrom-Json fails to parse project.lock.json ConvertFrom-Json fails to parse project.lock.json #1755
- ConvertFrom-Json keys collision: behavior difference between Core and Full ConvertFrom-Json keys collision: behavior difference between Core and Full #1567
- awesome
Invoke-RestMethod
/Invoke-WebRequest
- Fix IE dependency for
Invoke-WebRequest
Invoke-WebRequest errors if Internet Explorer is not installed #3042 - Invoke-WebRequest: Vague error thrown, resulting from TLS issue Invoke-WebRequest: Vague error thrown, resulting from TLS issue #2942
- [cut] Invoke-WebRequest / Invoke-RestMethod fails to follow HTTP redirects Invoke-WebRequest / Invoke-RestMethod fails to follow HTTP redirects from HTTPS #2896
- invoke-webrequest and invoke-restmethod -headers parameter is more restrictive ... invoke-webrequest and invoke-restmethod -headers parameter is more restrictive on PowerShell Core than on PowerShell Native #2895
- [cut] Invoke-Webrequest is missing some properties, like .ParsedHtml and .AllElements Invoke-Webrequest is missing some properties, like .ParsedHtml and .AllElements #2867?
- Invoke-WebRequest throw TypeInitializationException On Linux Invoke-WebRequest throw TypeInitializationException On Linux #2801
- InFile parameter of Invoke-WebRequest doesn't work InFile parameter of Invoke-WebRequest doesn't work #2754
- Invoke-RestMethod does not count on
Content-Type
field. Broken compared to PS 5.0. Invoke-RestMethod does not count onContent-Type
field. Broken compared to PS 5.0. #2245 - Invoke-RestMethod does not strip Authorization Headers Invoke-RestMethod does not strip Authorization Headers #2227
- Invoke-RestMethod should return the full error response from the remote endpoint Invoke-RestMethod should return the full error response from the remote endpoint #2193
- WebRequestPSCmdlets do not contain Response object in Exception on Mac OS X WebRequestPSCmdlets do not contain Response object in Exception on Mac OS X #2113
- Invoke-Webrequest accepts bad TLS certificates / crypto on MacOS Invoke-Webrequest accepts bad TLS certificates / crypto on MacOS #1942
- Missing command alias: iwr Missing command alias: iwr #1778
- Invoke-WebRequest does not support -TransferEncoding deflate Invoke-WebRequest does not support -TransferEncoding deflate #1753
- Add tests case for invoke-restmethod/webrequest, and move the rest of the tests ... Add a couple of simple tests case for invoke-restmethod/webrequest, and move the rest of the tests for feature. #1532
- Fix IE dependency for
- awesome
- Remoting
- PSRP over OpenSSH
- RFC on user experience closed
- Implemented in PowerShell Core 6.0
- SSH remoting slower than WSMan remoting SSH remoting is measureably slower than WSMan remoting #2852
- PSRP over SSH from Linux to Windows fails after password PSRP over SSH from Linux to Windows fails after password #2473
-
Enter-PSHostProcess
while in a PSRP/SSH session Enter-PSHostProcess does not work within an SSH remoting session. #2453 - Fix Ctrl+Break hang SSH interactive remoting Ctrl+Break causes hang in running script #2323
- Fix Ctrl+C Ctrl+C doesn't work as expected with SSH Remoting #2321
- WinRM client (
New/Enter-PSSession
,Invoke-Command -Session
) on macOS/Linux- Basic auth works on macOS (TODO: done?)
- Basic auth works on Linux
- NTLM auth works on macOS
- NTLM auth works on Linux
- TODO: generate more demos/tasks here
- Misc.
*-PSSession*
- Implicit remoting between PS Core and Windows PS Need way to interop between PSCore and PSFull on Windows #2592
- Fix
Register-PSSessionConfiguration
error Register-PSSessionConfiguration throws error when running in PS Core on Windows desktop #2555
- PSRP over OpenSSH
- Existing cmdlet coverage ported
- TODO: list? Start from this
- Telemetry
- Close on this RFC on implementing basic census telemetry
- Implement telemetry
- Progress bar
- Progress bar can significantly impact cmdlet performance Progress bar can significantly impact cmdlet performance #2138
- Write-Progress bar does not go away after operation is finished Write-Progress bar does not go away after operation is finished #1625
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
- PSVersionTable/PSEdition story
- Transformation parameter attribute to convert semantic version to parameter
- TODO: spec needed
- Invoke-Command -Session $s -Command {$PSVerionTable} Fails Due to SemanticVersion Invoke-Command -Session $s -Command {$PSVersionTable} Fails Due to SemanticVersion #1819
- 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.
- Analysis based on
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)