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)
sudo <native command>
should work from within PowerShellsudo <PowerShell cmdlet>
should work from within PowerShell #3232 sudo
bugfixesStart-Job
#452*-Job
cmdlets #3110 &
) #716screen
issues #2364ConvertFrom/To-Json
Invoke-RestMethod
/Invoke-WebRequest
Invoke-WebRequest
#3042 Content-Type
field. Broken compared to PS 5.0. #2245Enter-PSHostProcess
while in a PSRP/SSH session #2453 New/Enter-PSSession
, Invoke-Command -Session
) on macOS/Linux*-PSSession*
Register-PSSessionConfiguration
error #2555Install-Package PowerShell
Update-Package PowerShell
?using assembly
, Add-Type
, etc. 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
?
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
I totally agree what @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 ?
@pcgeek86 @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?
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.
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.
i agree to both @Jaykul and @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...
@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.
Does .NET Framework 4.6.1 work on Windows 7?
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)
What's about the Class Features ?
Interface implementation is still missing.
This was the roadmap at the end of 2014 :
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 :
https://github.com/PowerShell/PowerShell/issues/2223
https://github.com/PowerShell/PowerShell/issues/2642
https://github.com/PowerShell/PowerShell/issues/2225
https://github.com/PowerShell/PowerShell/issues/2217
Thank you !
Perhaps it would be useful to draw up this roadmap by using the GitHub Project(s).
Having interfaces would be cool!
@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.
Well, right now the developer experience is not so good! ISE is a joke without ISESteroids, and VS CODE is buggy as hell. This is leaving us with PowerShell Studio as the only option, but intellisense there is close to none.
So, maybe the right thing to do would be to invest in developing a good IDE, with PS 5-6 features support.
@g8tguy our plan is to invest in VS Code specifically via PowerShellEditorServices as it's open source and cross-platform. If there are any specific issues or capabilities that prevent you from using VS Code, please open issues in that repo.
@g8tguy if VS Code is "buggy as hell", file issues so I can fix them :)
The Last time I tried VS Code
, was like half a year ago.
And the language server
was constantly crashing when you
open 5-10 tabs with custom PS 5
classes and enums referencing one another, so IntelliSense
stopped working, and the IDE
was behaving kind of weird. I wanted to port, PowerShellEditorServices
To IDEA
, but it seemed too much work for one person, so I stuck with PS Studio
. But as I'm viewing the PowerShellEditorServices
changelog now, it certainly seems that lot's of the bugs were resolved, and VS Cod
e become more mature and stable, so I'll give it another shot. And Thank you guys for the product, you are doing a great job, advocating PowerShell! đ :1st_place_medal:
@g8tguy yep, a lot has changed since then. If you still run into issues developing scripts with classes in VS Code I'd be happy to try and fix them. Making Editor Services work in IDEA should certainly be achievable, if you ever try again I'd be happy to give you some pointers.
I can confirm - latest PS Code's versions is good! It happened in the last couple of months. Many thanks to PS Code developers!
How about support for long paths / file names? As .NET Core now supports them, I know there's been hope of this coming to PowerShell eventually - https://github.com/dotnet/corefx/issues/645. I'm sure that there will be much rejoicing in the enterprise world if/when this happens.
@itpaul PowerShell Core already supports long paths by default :)
@SteveL-MSFT Sweet! Thanks for sharing. Any idea on when this could make it's way into non-Core PS?
@itpaul PowerShell v5.1 on Win10 already supports it, but not be default (since the OS doesn't support it by default, if Win10 ever changes that setting, it'll just work automagically). You can enable it following this: https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/
@SteveL-MSFT Fantastic! Thanks again for your help. I'll start looking into it. After your first reply I discovered that you can run PowerShell Core portably, which is also fantastic! It appears that I'll be able to avoid implementing Alpha FS into our environment now.
@itpaul one of the decisions we wanted to go with CoreCLR besides the cross platform support is that it inherently supports side-by-side, so you can "install" (which is really an xcopy) of PSCore6.0 and it'll run happily next to Windows PowerShell v5.x without impacting existing scripts/apps that depend on v5.x
@SteveL-MSFT Pigs truly can fly in the Nadella Microsoft world. Christmas has definitely come early this year.
Great work! Are you planning to support Docker as well (we are planning to ship PowerShell Core modules)? Could you also upload the notes or recording of the 2nd RFC please as you did for the first one?
@HemantMahawar is the recording ready to be uploaded from the last Community Call?
@iSazonov: Could you link me to some of those conhost issues? The two I have above, #2138 and #1625 look like progress problems to me. (In my mind, even if they're caused by the underlying console hosts, we have so little control over the underlying hosts across platforms that progress functionality is what needs to be refactored or even limited). Also, added #2822. đ
I agree with you on code analysis. Maybe @JamesWTruher or @SteveL-MSFT could spin up an Issue for me to add here?
I hear you on WSL support, but I think we're prioritizing Linux distros and macOS right now because of the lack of compelling scenarios for using PowerShell from WSL. Furthermore, I think they eventually (this is only from public knowledge with zero internal knowledge of timelines or how the functionality might work) plan on interoperating with Windows processes, in which case you wouldn't need to run "PowerShell on Linux" from within WSL but just "PowerShell Core 6.0 on Windows".
If you disagree with my statement on "compelling scenarios", please let me know. I love to be proven wrong on these sorts of things :)
@ChristophB125: could you elaborate more on what you mean by "support Docker"? We currently have Docker listed as a platform, and we publish a ton of images to the Docker Hub (including nightlies, though it looks like we forgot to publish alpha.15, I'm following up).
If you mean, do we have a PowerShell module for managing Docker, the Hyper-V team has already done exactly that. It already supports Windows PowerShell 5.x as well as PowerShell Core 6.0 on Windows, Nano, macOS, and Linux.
Out of curiosity, who is "we"? Would love to talk more about how you're using PowerShell 6.0 :)
Also, I got some bad news. It looks like checkboxes do NOT automatically get checked when issues get closed (at least not at the L3 level). I closed #2245 and it didn't get checked by itself (and that's one where the entire line is just the issue number....) đ
@joeyaiello submit feature request to GitHub đ¸
@ChristophB125 Recording of the 2nd community call is now available on PowerShell & DSC Team Channel /cc: @SteveL-MSFT & @joeyaiello
@joeyaiello
Could you link me to some of those conhost issues?
Oh, it is hard to do but it seems I've gathered main together (I believe there are other useful comments that we have missed.)
If you disagree with my statement on "compelling scenarios", please let me know. I love to be proven wrong on these sorts of things :)
I agree but there are still "compelling scenarios".
Microsoft announce WSL as "kill" developer feature:
The WSL was designed and built by the Windows Kernel Team and delivered in partnership with Canonical, to help Windows 10 developers use the rich Linux developer ecosystem and tools alongside the great tools they are already using in Windows, without having to boot into another operating system or VM. This is definitely a âby developers, for developersâ Windows 10 feature, specifically designed to remove a bit of friction from developersâ daily workflow.
As a Windows user I tried to use the Powershell Core under WSL and failed đ
I want:
I believe that this is fully in line with the Microsoft WSL announcement.
It would be great to ask Kernel team to help us to get it working.
@joeyaiello Thank you for the answer. Yes, the PowerShell docker images is what I was looking for. This would be great because then PowerShell can get shipped as part of the deployment (we have the fear that our clients are anxious about Microsoft's IP being on their Linux machines therefore docker can help us hide that at least at install time). By the way,, 'we' is just loosely referring to the team in my company that I work for, which I cannot disclose here. Although we are a Microsoft Gold partner the information from the dev team directly is very valuable to us. As GitHub does not allow private messaging any more, I sent you a LinkedIn request instead if you want to find out a bit more about how we use PowerShell.
@HemantMahawar Thanks for the effort. I am looking forward to join the next call!
@iSazonov - the WSL issue affecting you the most is probably https://github.com/dotnet/corefx/issues/12452 - so it doesn't require a fix in Windows - anyone could jump in to fix it (though it sounds like it might not be a simple fix or it'd be fixed already.)
And after reading an update to the issue, maybe a fix is coming from WSL. We'll see.
@lzybkr Thanks! Build 15025 still has the bug. Waiting next build.
@joeyaiello #2882 move to dotnet-resgen (support compile "file.En-Us.resx") and csproj.
@iSazonov: You're saying those are two separate items, right? The former is a requirement for localization (something we need to discuss with @PowerShell/powershell-committee, I'm not sure how we get that done today), and the latter is a requirement for moving to .NET Core 2.0 (a requirement for supporting .NET Standard 2.0).
@joeyaiello we have a custom solution for res-gen today, but we should move to the dotnet supported way. csproj is moving to msbuild, although we've talked about it, I don't see an issue for it.
@joeyaiello Steve said more clearly than I. We already have the issue for dotnet resgen and we should open a issue for csproj. And we should include the issues in the Plan under "dotnet 2.0"
Added the csproj/MSBuild goodness, we still should talk about resgen and whether it's required for 6.0.
This might be more Hyper-V than PowerShell (or equal parts Hyper-V and PowerShell), but I thought I'd mention it to make sure: I think it's very important to have PowerShell Direct work for Linux VMs as well as Windows VMs.
@SteveL-MSFT Thank you for focusing on developer experience as a priority over adding new features. I strongly agree with your direction. Start by creating a solid foundation, and add features post-6.0. /cc @joeyaiello
AppImage #2024 in Packaging, Installation, and Deployment
@joeyaiello #2138 and #1625 fixed - I put marks in Plan.
I think NTLM auth over SSH should be included in release same as for WinRM
@joeyaiello #3140 fixed - I put the mark in Plan.
@mnaiman I'm...actually not sure if that request makes sense from a crypto perspective. I challenge you to try what it is you're trying to do and report back if it doesn't work. We support password-auth for domain and non-domain accounts in SSH-based remoting (both with and without PSRP). I'm not sure that it goes through any kind of NTLM layer (as I'm not sure SSH support NTLM), but I don't think it should matter from a functional perspective.
EDIT: Maybe @manojampalam can comment here.
@mnaiman @joeyaiello currently, we don't support SSO as SSH itself by default prefers keyboard-interactive auth which works just fine with NTLM and Kerberos against Win32-OpenSSH. So this is different from WinRM remoting, but is consistent with SSH.
@joeyaiello @SteveL-MSFT SSH SSO provider is "gssapi-with-mic" (NTLM & Kerberos).
It allows single sign on on windows without typing password or saving private key somewhere.
Some part of gssapi is already here https://github.com/SimonWilkinson/gss-openssh/
Here implementation for client https://github.com/Lax/net-ssh-kerberos
Free/Commercial servers which supports gssapi PowershellServer & Bitwise SSH.
Here is already request in https://github.com/PowerShell/Win32-OpenSSH/issues/96
I am running powershell on MAC machine.
$psversiontable
Name Value
---- -----
PSVersion 6.0.0-alpha
PSEdition Core
PSCompatibleVersions {1.0, 2.0, 3.0, 4.0...}
BuildVersion 3.0.0.0
GitCommitId v6.0.0-alpha.13
CLRVersion
WSManStackVersion 3.0
PSRemotingProtocolVersion 2.3
SerializationVersion 1.1.0.1
But send-mailmessage command is not working for me. I am getting below messages.
send-mailmessage
send-mailmessage : The term 'send-mailmessage' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path
was included, verify that the path is correct and try again.
At line:1 char:1
+ send-mailmessage
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (send-mailmessage:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
I'm having an issue with PS 5.0 when running invoke-webrequest... basically if the response comes with quotes in the utf-8 value it will fail. Will this be fixed in the GA version (https://stackoverflow.com/questions/36275618/why-is-invoke-webrequest-and-invoke-restmethod-failing-and-succeeding-at-the-sam)
@pradeepprakhar Now 'send-mailmessage' is ported.
@jsburckhardt Please open new Issue with full description your problem or question.
@joeyaiello #929 and #2227 was fixed.
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
Are there plans to add comment support (or at least ignore them) in the list for ConvertFrom-Json
?
@erichiller please open a new issue, we can consider for 6.1.0
Just include Kerberos support please (and WinRM perhaps too) then we look at this again.
@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.
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.
@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.
The following architecture diagram from here might help to understand WinRm-WSMan:
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.
@VGerris as @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.
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....
Most helpful comment
@joeyaiello @SteveL-MSFT SSH SSO provider is "gssapi-with-mic" (NTLM & Kerberos).
It allows single sign on on windows without typing password or saving private key somewhere.
Some part of gssapi is already here https://github.com/SimonWilkinson/gss-openssh/
Here implementation for client https://github.com/Lax/net-ssh-kerberos
Free/Commercial servers which supports gssapi PowershellServer & Bitwise SSH.
Here is already request in https://github.com/PowerShell/Win32-OpenSSH/issues/96