joeyaiello's comments

joeyaiello | 8 years ago | on: Microsoft’s PowerShell Core Offers Cross-Platform Automation

Our filesystem provider could definitely use some performance work, and we're discussing redoing it at some point in the next minor version release or two.

Personally, for quick interactive stuff, I just `ls` when I'm sitting on a non-Windows machine. My finger muscle memory just does `ls -al` and `rm -rfv` when I'm sitting on a Linux box.

But if I need to do some heavy sorting/filtering, I'd much rather save the minutes wrestling grep/awk/sed/xargs than save the minutes on execution (or the hours on having just done some operation based on some grep/awk/sed/xargs work that I didn't properly test).

joeyaiello | 8 years ago | on: Microsoft Adds an OpenSSH Client to Windows 10

Again, not my backlog personally, but I'd wager that the VT100 work that they've been doing in the console host is going to do a lot more for the ecosystem (WSL/"Bash on Windows" included) than tabs.

That being said, yeah, I also want tabs. In the meantime, I switch back and forth between conhost and Cmder. :shrug:

joeyaiello | 8 years ago | on: Microsoft Adds an OpenSSH Client to Windows 10

As part of the beta, we only support crypto algorithms that ship as part of OpenSSH itself, as opposed to algorithms that ship in OpenSSL/LibreSSL. Hence, we only support ed25519 in Fall Creators Update.

If you grab our GitHub bits, we compile against LibreSSL there, and you should see LibreSSL showing up in future Insider builds of Windows. That brings support for all the other crypto algorithms you'd expect (RSA, DSA, etc.)

joeyaiello | 8 years ago | on: Microsoft Adds an OpenSSH Client to Windows 10

Haven't seen that error message before but I highly encourage you to use our GitHub builds where we've fixed a ton of issues related to path parsing and VT100/ANSI compatibility.

Those builds will also be showing up in Insider builds over the next few weeks (if they haven't already).

joeyaiello | 8 years ago | on: Microsoft Adds an OpenSSH Client to Windows 10

What kind of network drive support are you looking for specifically?

If you mean, "interact with them from an interactive shell like cmd or PowerShell", yes, you can absolutely do that. Our implementation literally stands up a console host on the server side, so whatever you can do in that console host with the privileges you have, you can do over SSH.

If you mean, "do you support SCP and SFTP for transferring files in a network-drivey way" the answer is also yes. SCP is supported directly against sshd, and we ship both an SFTP server and client.

If you're talking about something NFS or SMB related, I'd be curious to hear more details.

joeyaiello | 8 years ago | on: Microsoft Adds an OpenSSH Client to Windows 10

It drops into cmd, but it is configurable (and there's actually a Chocolatey community package for it that I believe prompts you for which default shell you want at install-time).

With PowerShell Core 6, we also support PowerShell Remoting Protocol (PSRP) over SSH as a transport, which means that you can do stuff like New-PSSession and Enter-PSSession without WinRM. (PowerShell just gets registered as a "subsystem" of sshd, same thing sftp-server does.) You can check that out here: https://github.com/powershell/powershell/tree/master/demos/S...

joeyaiello | 8 years ago | on: Microsoft Adds an OpenSSH Client to Windows 10

Hey there, everyone! I'm the PM for this project, and it looks like I'm a little late to the party, but I wanted to drop in some notes to add to the discussion:

* we also shipped OpenSSH's sshd server, but it's a little tricky to configure right now. Expect a blog post this week. * This is not production-ready in the current version of Windows 10 (hence the "(Beta)" in the label), but we hope to be soon. * All of this is being done in open-source out of a fork at https://github.com/powershell/Win32-OpenSSH (code work is technically checked into https://github.com/powershell/openssh-portable/ first, but those will be consolidated at some point). Check the Wiki there for a ton of info. * We've been working closely with the official OpenSSH Portable maintainers to get upstream at some point in the future. They've been awesome to work with so far, and we're really looking forward to moving Windows onto the definitive SSH implementation of the world.

This is been a super fun project to work on over the last couple years, and I'm glad that there's such a groundswell of excitement around it. Like I said, I hope to be publishing a lot more documentation/material on our plans as we get to a production-ready state.

I've also been super swamped with the release of PowerShell Core 6.0 [1] for Windows/macOS/Linux coming early next year, hence the lack of a good release announcement on these beta bits...Thanks to Patrick Kennedy for finding it and letting everyone know! :) )

[1]: https://github.com/powershell/powershell

joeyaiello | 8 years ago | on: Windows Subsystem for Linux on Windows Server

We're doing a port of OpenSSH to Win32 right now that includes the SFTP server and client that ships as part of OpenSSH: https://github.com/PowerShell/Win32-OpenSSH/releases

Key configuration is a little tricky right now, but we've got some helper scripts (eventually to be released as a module on the PowerShell Gallery) that it a little easier:

[1] https://github.com/PowerShell/Win32-OpenSSH/wiki/Security-pr...

[2] https://github.com/PowerShell/Win32-OpenSSH/wiki/OpenSSH-uti...

joeyaiello | 8 years ago | on: Amazon Hub

Even just to go to your mailbox? I routinely walk in the door from work, change into some more comfortable clothes (which may or may not have pockets), and then grab keys to go get my mail. I'd say I don't have my phone most of the time I do that.

joeyaiello | 8 years ago | on: The increased use of PowerShell in attacks [pdf]

That list you just provided is actually an AWESOME list of things we should make more accessible/understandable in our documentation. There's a few that would also make great rules for PSScriptAnalzyer[1] (basically our linter; the LiteralPath one in particular would probably be easy to write as a warning).

At this point I should also plug our tooling improvements. First, our VS Code Extension[2] is AWESOME, debugging there has massively improved, there's snippet support for boilerplate with best practices, it integrates directly with PSScriptAnalzyer, and even enables some "quick fix" of linter warnings. We've also got something called Plaster[3] that does templating to encourage best practices (think of it like a "Yeoman for PowerShell").

But yeah, as we craft new docs for writing the best "cross-CLR, cross-platform" (aka universal, aka portable) PowerShell modules, I want to make sure we tick all these boxes.

Oh, and we believe we addressed the whole "different singleton version on different versions of Windows/WMF" thing by making sure that PowerShell 6[4] is x-copyable, fully side-by-side, and supported downlevel to Windows 7/2008 R2 (though Win7 support is currently busted, we're working through fixing it). If you've got a workload or an application that depends on a new feature of PowerShell, you can include PowerShell 6 app-local, or you can distribute it to machines in an environment through either MSI or a ZIP-based file copy.

As for Microsoft products that support specific versions: again, I totally hear you. The best thing you can do is push on those products their respective feedback mechanisms (almost everything is on the Feedback Hub or some product-specific UserVoice now) to support all versions of PowerShell. In the meantime, the side-by-side nature of PowerShell 6 means you can install the latest version without fear that you'll void your support or break existing scripts/workloads.

[1] https://github.com/PowerShell/PSScriptAnalyzer

[2] https://github.com/PowerShell/vscode-powershell

[3] https://github.com/PowerShell/Plaster

[4] https://github.com/PowerShell/PowerShell

joeyaiello | 8 years ago | on: The increased use of PowerShell in attacks [pdf]

(Thanks to ezquerra for bringing me back to the conversation here via Twitter.)

Disclaimer: I'm a PM on PowerShell at Microsoft, and the following is based on my personal observations. There's also no current plan to do any of what I suggested (but it's certainly giving me a lot to think about at the start of my work week).

The default ExecutionPolicy was engrained and controversial long before I joined the PowerShell Team (or even Microsoft), and I'll be the first to admit that, as a long time Linux user, I didn't GET why I couldn't just run arbitrary scripts.

The public Microsoft opinion on the matter has always been that ExecutionPolicy is there to try and prevent yourself from shooting yourself in the foot. In Linux, this is very similar to adding a +x to a script (although that's clearly much simpler than signing a script).

I'd say it's also akin to the red browser pages warning you about self signed certificates, or Microsoft/Apple "preventing" you from running certain app packages that are "untrusted" in one form or another. In one sense, you could actually argue that PowerShell was ahead of the curve.

Now as a power user with much less at a stake than, say, an IT administrator at a Fortune 500 company, the first thing I do with all these restrictions, warnings, and confirmation prompts is to turn them off.

But those warnings (often with no clear way to disable them) are there for a reason. PowerShell was built at a time when Microsoft admins were GUI heavy, and PowerShell did its best to herald them into a scripting world while fostering best practices. And if you're using a bunch of scripts sourced from SMB shares within your domain as a domain administrator, you don't want to accidentally run a script that hadn't gone through your internal validation process (hopefully culminating in the script getting signed by your domain CA).

So let me assume that you agree with everything so far. Why does this experience still stink? Any Microsoft administration worth their salt uses PowerShell, and many of even the power-est of users finds ExecutionPolicy annoying.

In my opinion, it's too hard to sign scripts. We should be following in the footsteps of the drive to get everything on HTTPS (props to Let's Encrypt and HTTPS Everywhere, along with many others). We should have guidance on signing if you have a CA, we should have guidance on getting scripts signed by third party CAs, and we should probably offer a cheap/free service for signing stuff that goes up on the PowerShell Gallery.

Oh, and we should make it easier to read the red error that gets thrown explaining how to lookup a help topic that tells you how to bypass/change ExecutionPolicy.

Unfortunately, that's all easier said than done. But the default being what it is puts the onus on us to do something to make security easier.

joeyaiello | 8 years ago | on: The increased use of PowerShell in attacks [pdf]

Disclaimer: I'm a PM who works on PowerShell at Microsoft

There's a bunch of 3rd-party modules out there that do a great job of offering parallelism[1][2][3], and we also support the notion of "PowerShell Jobs"[4] (which one or two of those third-party implementations actually build on to achieve what they're doing).

However, we decided that strong parallelism support is important enough to build into the language, so we're mulling on a first-party design.

If you're interested, we've got an RFC out where we're looking for feedback on the parallelism/concurrency design.[5]

[1]: https://www.powershellgallery.com/packages/PSParallel/

[2]: https://www.powershellgallery.com/packages/SplitPipeline

[3]: https://github.com/RamblingCookieMonster/Invoke-Parallel

[4]: https://msdn.microsoft.com/en-us/powershell/reference/5.1/mi...

[5]: https://github.com/PowerShell/PowerShell-RFC/issues/85

joeyaiello | 8 years ago | on: The increased use of PowerShell in attacks [pdf]

PM on PowerShell here: if you have any of those small C# apps handy, I'd love to take a look at them to see what you're doing that's difficult in PowerShell.

Similarly, we're trying to make some improvements to debugging right now with PowerShell 6.0 [1] (the one that's cross-plat and built on .NET Core), and I'm very interested in hearing your feedback on how we can do a better job there.

Even if it's "fix your docs" or "too hard to learn", that's great info, especially coming from a C# guru.

[1]: https://github.com/powershell/powershell/issues?utf8=%E2%9C%...

page 2