What's new in PowerShell - BRK3069
Hello. Guys we'll. Try to get started, now howdy. Thank. You for coming, at four, o'clock and, still, in such a large number my, name is hemant Mahavir and with me I have superstar, I'm Joey Aiello, and we are program managers on the PowerShell team. So. Before we get into what's new in PowerShell let's talk about the power of the, shell you. Guys are familiar with all these, things and essentially, what, it talks about is you it's not a Microsoft, thing it's, not a Windows thing whether you are AWS, Google, as your office exchange, Windows Citrix. Lenovo, Dell. Everywhere. You are using PowerShell. To automate things and make things better so. That's just one aspect of, what you can do with PowerShell the. Other aspect, is what. PowerShell. Has done for you and here are some quotes where people talk about how, they have scaled up things with, the same number of people how, they've gotten promoted how. They have gotten their salary tripled, and their. Save time effort, and money with, PowerShell so thank you for using PowerShell, and thank, you for this such a great community here. And. If. You have your hero stories, this, is a link you can go and tell, your, hero stories and you plan to collect them make. Some tweaks to it if it's too long we'll, make some shorter and put, put, them online we haven't figured out where but your, stories can go there you have an option to say my, story I don't want my name my company name that's fine and if, you're like Jason you want to have your name your company name and your photo that's, also fine. So. When we look at PowerShell, there are a couple of teams that shows. Up and they, are about you boo kitty agility. And community. And when, you look at PowerShell, it's across. Everywhere. Whether you are doing. Windows, Microsoft outside. Microsoft. Linux. Mac, browser. And you. Look at agility aspect, of it now you have PowerShell, believing it's such a fast. Cadence, you, my issues they get fixed you release for example, PowerShell core in. Nine months you have the least two releases. Two versions of that 6.0. And 6.1. You. Look at cloud shell that, is what started, a year ago at ignite as a public, preview and now it's. A ga in a year so, there's. A lot of innovation. Happening at a very fast pace and the. Best part of that is community. Which is all you guys the, kind of love affection. And. I'm. Trying to find the right word which is, Fick. Telling, us when we are doing wrong in a very nice way sometimes. In a very brutally. All, fine, that's, been the best thing and you. Will be, surprised, or might not be, no. Other team in Microsoft. Has this kind of following that you guys have provided with PowerShell so, thank you for that. And. If. You're still not convinced that PowerShell, is important. Even in 2018. You, can look at the landscape people, say oh cloud is changing everything it's, not just cloud it's about.
The, Digital transformation, cloud. Is definitely, playing a big role there, but, there are other things happening across the sector, in terms of technology, and it. Makes. You wonder how, you have the change of processes, your systems, to adopt, and deliver value to your customers, and that's, where you need automation. So, automation, is the key for, our digital transformation, it's not people it's not cloud alone and, with. Bad in focus. PowerShell. Has now a new mission to support this digital transformation, and that is. From, any client, you can manage any server running in any cloud and this, is not all about cloud, if your on-premise, is also, about managing any hypervisor. Any kind, of storage and any kind of networking. So. With that I'll, hand it over to Joey, thank. You are. You aiming, so. Let's. Look at this a little bit more concretely, let's. Talk about that this shift in management that's taken place from. When Windows PowerShell first, got going 10 years ago to. Today. So in in the sort of traditional world. Powershell. Dealt heavily in Windows system, management right so this, was all about taking this disparate, set of api's that windows had namely. You know these win32, native api's we had WMI and sim you, know there's a bunch of dotnet api's that enable management, and you've got all these different data types you know you're dealing in files in the registry. You know CSV, files XML. JSON all, these different data structures, and and, PowerShell, really came along to be the funnel, or the glue language, to bring these things together and allow, you to manage your Windows infrastructure, in a cohesive, consistent. Single way right, so, so this is this has been the traditional role of Windows PowerShell and is really the solution that, we think we've we've, been. Able to to, finally bring to the table through, these 10 years of Windows PowerShell, now. In the in the modern world in the digital transformation world, there's. A lot more of this cloud and resource, management happening, so we're sort of going up a layer in the stack and we're dealing with this very heterogeneous world, in the same way that you have these disparate disparate, api's from within Windows we've got this disparate set of REST API is out there for managing as your, arm you, know the litany of other third party clouds SAS. Applications. Like ServiceNow, or pager duty or you know any of these applications. That you're bringing into your environment and. And you want to manage the all these things from a single location as well and. You, generally want to do this from from a lighter-weight runtime, you might want containers, support you, you you might want these shorter-lived server lists as, your functions sort of. Models. For running, these these tasks, and, and you need something that's going to keep pace, with the, pace of azure I think you guys all know you. Know you come to these things because it's really hard to keep track of all the stuff that we keep putting out and so, you need something that's going to be able to keep pace with all those new technologies and enable. You to manage all these things in a central way so, that's that's where PowerShell core comes in right, and we're not talking about abandoning, this this old a mission, of managing, inside the guest and managing your Windows infrastructure, because that's still a very important, part. Of your overall, management, story, but. You also need something that's going to do a great job of managing rest api's. Json. In the cloud. So. That's where powershell core comes in right PowerShell core is our cross-platform, portable. Open-source version and PowerShell built, on top a dead core that's, a lot of words what does that mean. So. PowerShell core like we said it's the future of PowerShell built on top of net core it's, cross platform which, means it runs in whatever environment you, need it to run in that could be Windows Mac OS Linux, as. We will talk about later that that could be in your browser or on your cell phone. It's, self-contained and, side by side this is one that a lot of people sort of gloss over as. A very sort. Of a smaller benefit, of PowerShell core but, in reality we. Know the pain that you've been dealing with in terms of managing the version of PowerShell on your machine we know that wmf, reboots. Are expensive, we know that when you install that wmf and you get the new version of PowerShell and you're moved forward to four or five that. That you may have some version and compatibilities, or some breaks that happen and it's really difficult to rollback so, you're, spending your maintenance window doing the testing, and the, rollback and.
And You know maybe you. Know it's, it's a painful experience so, with, PowerShell, core we made sure that it was totally, side-by-side with Windows PowerShell we, have an MSI based installer that that will install it as an application in Program Files we've, also got this portable self contains if copy that you can unzip to a directory and we support and side by side installations, of even powershell core so as we move forward you'll be able to to test out a new version of powershell core without, worrying about your impacting, or impacting, your existing workloads, and. Lastly, a, partial, core is open source right, this means that you have a direct line to the engineering team when you file an issue in github you're, talking straight to us there is no middleman there's, no having to go from the feedback database, to where the engineering team really tracks the work you, were putting it right in front of the engineers that are working in on every day you're also putting it right in front of the rest of the PowerShell community, and we've had an immense, amount of contributions, coming from you guys to, make PowerShell, a better, tool and and, so we're able through this open source model to share the sort of collective contributions of the PowerShell community and and, make. Sure that everyone, is is getting all the benefits of our shared effort. So. As we said PowerShell, was really designed from the ground up to manage your heterogeneous, environments, in the hybrid cloud so heterogeneous. Meaning, across, environments, and platforms, and hybrid, cloud meaning both on-premise in, the guest and and you. Know out out in your sort, of cloud resource, management world. So. The, first version of PowerShell core that we shipped to production, was was earlier, this year in January. 6.0. Big features included, again cross cross, platform, nature. This this side-by-side and, portable, installer. We. Also introduced this concept of SSH, based PowerShell, remoting so, many of you will be touching on this later but many of you are probably aware of the work that we did to.
Support Open SSH, in Windows and that'll, be coming in Server 2019, but, we also added a feature to PowerShell core that allows you to use the existing enter PS session and new PS session commandlets, against, an SSH based server rather, than against a win RM or our WS man based server so you're, able to use these existing concepts, with. This new transport protocol and a new modern, interoperable. Method of authentication, and authorization. We've. Also made massive. Improvements, to the rest and JSON commandlets so this is in line with needing. To make sure that we support this disparate world of, REST API and is actually a great example of where we were able to leverage, massive, community. Contribution, so you know we had someone. Marc Krauss who who. You know piled on I don't, want to name too many names here because we get, in trouble but we're you know thankful for all of our contributors but, Marc did, a phenomenal job really just just piling features, into the invoke web request and invoke rest method commandlets, as. Well as some of the JSON command let's and in large part that was so that he could do his job better, but, in in in making those improvements instead, of writing a small, module, you know that sort of grafted. Itself onto the existing restor web commandlets you, know he was able to generalize, what, he needed and, put that into PowerShell so that the entire world could enjoy that benefit, and. Of course we have tons more stuff when you pick up the deck here we, linked out to the release notes but I'll be showing some of the smaller features in just a few minutes of, some of the stuff we shipped in sick so, we. All shows shipped not not as part of PowerShell Corp but something, you should be aware of we shipped a PowerShell standard, which is an SDK, for, creating universal, so we know that not everybody's ready to move into powershell core we know that Windows PowerShell is still an extremely part of an important part of your workflow and so we know that.
That We need modules, that support both Windows PowerShell and PowerShell core so, we've been working with with first party teams at Microsoft, and, we'll have some better documentation, up soon about, how you might take your C sharp base, command line and and, build, it against PowerShell standards so that both Windows PowerShell and PowerShell core users can use it this. Is a quick graph here showing the, telemetry, that we get based, on PowerShell start ups so every time somebody opens, PowerShell, we did we send back you. Know an OS string and a version number about hey hey I'm a PowerShell and this is what version I am we, put all of that into a public dashboard, and. This is a representation, of that dashboard here showing, the explosive, growth. Going. Into the 6.0, release candidates, we, actually don't have the September data here but we're on track to pass, five. Million starts, in. September and and. You'll notice here that that a a big, chunk of this is Linux so we're actually seeing a lot of the adoption in the uptick in the Linux world we'll talk about that more a little bit later I'm. Gonna go ahead and show a couple of these DES, lighters as we like to call them these, are things that that may be you, know aren't big enough for the slide or for, you. Know the the line items of the blog post but that are still a huge, quality of life improvements, that that give you a really, good reason for adopting PowerShell core even, for your existing workloads so what, I'm going to show here is is actually a performance, increases between. Windows PowerShell on, both. In. This particular one this is on ungrouping, items so I'm generating a bunch of random numbers and. I'm grouping these all together by it by the count of. Each, of these numbers and this thing I think takes roughly 10. Or 11 seconds, on, Windows, PowerShell 5.1. And, again. These are performance. Improvements, that came in from our community, I think these ones were from Stephan. Gustafson. Who's, also, known as power code, performance. Guru this guy you, know tackled. Some of the some, of the performance, problems that we've been having in PowerShell so, see this one actually took 24, seconds, in, Windows PowerShell and in our test we're seeing relatively. A 74%. Speed-up, here so you'll see this happened in 6 seconds right so this is just just, a very basic case, of generating a bunch of random numbers grouping, them we're gonna see the same thing with sorting. Show. This one right here this, should be a little bit quicker but but again 42%. Speed-up overall. Wander. To do to do these. Were running faster, before, that's. The one they live in second one that's the 11 second one there you go yeah a 24. Second that's a brutal one so. This one here again we're, down to 6 seconds so roughly the same speed up another. Big one is importing, CSV, files so. You'll see this this one a little, bit quicker that the CSV is relatively small but, roughly half the, time we were able to import, that CSV as an object and, then this last one is a JSON. Conversion, again, a relatively small file but but a very. Significant, speed up or seen from 391. Milliseconds, to 1 134, so. You, know when you're iterating over large datasets we know this is extremely critical that you know that that 50%, speed-up, could be the difference between a 1-day and a two-day operation. Yes. Excellent, thank you. So. Another thing that we added and will go ahead and expand a powershell core here is is native, markdown support so we, built this in because we want to have some more native markdown support in our help system and that hasn't come yet but, we've exposed some of that formatting.
Here. So you'll you'll see that we're, basically parsing, this markdown file for those of you unaware this is a format. For you know very, easily writing, italics. Bold code, fences tables that sort of thing so and, so you're seeing some of the syntax highlighting, come through in. In the actual show markdown so let, me ask my raise of hand how many of you like to write mammal. Does. Anyone know what mammal is. No. Mo mammal is the horrific, XML. Format that we use, in our help system that, we would like to abandon forever. We're. Working on it and people. Who are not on the documentation. Repose. Essentially, you are writing your documentation, in markdown, we. Do some transformation, convert into mammal and put it on the cloud and you download and the idea of this markdown help is in future. One day we can just take those markdown, files directly. And render. It on the console for the health system so. The idea is when you run get help you're gonna get all of this nice formatting, and you'll have customizable, themes where you can for instance change, the color of the headers or the hyperlinks, and, so we're gonna do exactly that right here we're going to take. This. This this little thing right here this is called a VT 100 or ansi escape code sequence and, this basically tells the terminal you can look these up on a table online with the colors map too but you can tell the terminal hey this, is what color I want to use you'll see we set the header to from, yellow, to. I, believe green, right. And so then when we actually do the show mark down from before you'll see that the those, header two is changed colors so you know you can do all kinds of theming we hope to have some helper command let's soon that. Make coming up with these vt100, codes a little simpler. Another. One I'm showing here is invoke rest method we. Added pagination. So one, of the problems that I'm actually gonna switch over here to just use vs code because that's so much easier to read, so. If I hit f8 here you. Will see that we went ahead and ran this invoke rest method command so inside, of dollar a we've got a bunch of the powershell github issues against the github api so, if i look at the couch of these, we. Have 30 records right now if, i and this is specifically if I look at the count of the names you'll see we have 30 records so we clearly, have more than 30 issues on PowerShell right this is not this. Is just what you hit when you are on page one so. Marc. Krauss added, this awesome fault, I believe as Marc added, this follow rail link which basically says hey if, there's a next rail, link at the end of that that API just go ahead and keep traversing, it for me and actually I don't want to get all of them I just want to get the first five pages so, hopefully we should expect, to. Get. 150. Records out of this one so this will take a little bit longer to load but. The idea is that when you're dealing with paginated, data instead of having to write this for each loop that says hey whenever I get to rel rel, next go ahead and follow that and then append that to my previous item I'm just going to get. 150. Items just like that so you, know if you're dealing with REST API is again this is one way that we've modernized, powershell. Core to make it a little bit better for those rest api so this. Is another one that's huge I know it seems small to some people, but. When. Using select object, in the past if, you wanted to expand a property with select object a PowerShell was not aware a tab, completion time of what kind of properties, would be available to it from commands earlier in the pipeline, well we fixed that so now you can just tab, through years like that boom I know that one's good right. So. You can just tab through those no problem, expand, your properties, all day long, and one thing is you have heard Geoffrey say that also is power, shells main goal. Is to make you guys lazy and if. You guys are not lazy enough, with PowerShell opene, should tell us and we'll make sure you are more lazier than you are today. We. Are all very lazy we appreciate, laziness, so well, yes. Do that. Here's another great one who uses like pop D push T anybody. So, that's like you know you can you can push, a directory, on top of your stack and then when you pop it off you go back to the directory you were before you, don't have to use that anymore we, can just CD over to say I'm. Gonna do it here with f8 I don't want to type I'm lazy so we're in system 32 okay, now we're in our home directory and now you know now we're in the root of the drive and wait. Where was i before OCD. - oh now we're back in the home directory CD - on our back in system 32 right. Don't, have to use push D pop T anymore just CD - all day long this thing goes stacks, forever. Probably. Not forever somebody's gonna quote me on that it's gonna be like 500 or something.
Update. Help us as non-admin who's ever run update helping gone oh crap yeah I got a run in as admin yeah. That's really annoying yeah we don't do that anymore we just we just go ahead and you know let you let you update help as a user so, we go ahead and put it in your app data now, all you guys who don't have any local admin can update the help on your on your death machines. That's. A good one another. Lazy we could get service, says. This is where object - not so, basically it's hey you. Know give me all the objects. That I'm receiving on the pipeline that either don't, have this property on it or or this property is null so like say all the services, without dependent, services that's, really easy now I don't have to do, a for each loop and. Go if all these things or, a where object - like or any of that, um standard. Deviation, and measure object, this is gonna be good for for you performance, people you know we went ahead and added that this. Is the standard deviation of my CPU, usage. For. Those of you that use the WMI and 80s I type, accelerators, we went ahead and added those back to powershell core you, know these these just allow you to do. Some WI queries a little bit simpler than you would with the commandlets. Question. That appearing is so you added this type excavator, does, that mean the commandlets, are back, no. Does. My Commandments, are not back we still recommend that you use Sim commandlets which, are is the the v2 module for WMI in many cases especially if you've been using positional, parameters you can just do a find and replace with, your sim, sim commandlets and, we've we've done this in a bunch of our scripts you get W my instance you know we just replace that with get some instance and things just work without. Any other editing so that's. Really cool, you know we added back run as admin to the jump list here for powershell core another, one in the msi we've added a checkbox so that you can have a, context. Menu to open here or open here as administrator, with powershell 6 that's. Pretty cool, i'm. Gonna skip this one just cuz we're going down in time this one I love I'm gonna show this one side by side with the 2 power shells, basically. We just made the JSON, less ugly so, this. Was our old JSON that's a lot of white space oh my god. Let's, not do any of that let's just make. It reasonable, and you. Know just a couple spaces that's nice. Yeah. Right. This, one was a big breaking change that we needed to do because, basically. The. In the old world we'd go and if you had a PS object, and you had like an array we'd go and shove that count property, on it which you probably don't want you're gonna go count the things up in the JSON file later so now we, just went and said hey if you have this array of 1 we're gonna treat it exactly like it came in from the pipeline and just, give you the one so. So that's a modification. That we made. Again. More of this custom, method stuff our, rest, stuff this this is to support custom. Custom. HTTP. Methods so. If you're using a method other than say a post or a put or again you. Now have this - custom, method and you'll see that when we invoke against a test server it knows that we are in fact using this test method I.
Could. Just keep going on we got two more I guess we'll make it through here we. Added a parent. Property to system Diagnostics, that process you'll see if I run this I've got a bunch of chromes because, chrome of course needs a process, for every tab and every plugin and, as I'm scrolling through you'll see you can find the route, chrome. One because this is the one that got launched from Explorer and. Finally, is, anyone don't know about semantic versioning. Yeah. So semantic versioning, is a spec, that got put out a while ago to, define a rigorous, structure. That everybody could use for a dot, B dot C dot, d you, know - some, text, version. Numbers right so so we're trying to unify the world of versioning and PowerShell, in particular has adopted semantic, versioning if, you look at the PS version table, this, is what a semantic. Version string might look like 6.1. Rc1. So, we went ahead and put a type accelerator, in so, that if you you know take a string, for. Instance and you. Run. That string i don't miss. Don't. Need that but. You can go ahead and just just basically get this some semantic, versioning object with. A string and and just do that cast and and you've got that real object that you can now poke through so, this. Is just a small, selection of all the stuff in the 6.0, and 6.1 release notes i implore, you to check them out you'll find your next big goodie and I now know that everyone loves expand property more than anything in the world so I'm really I'm really glad to hear it we got, the laughter, going just right so and and one thing you know this Joey talk about is like oh V and, then, the word V here is V. As a whole with community it's not like Microsoft, is doing all this work for you it's, the community as a whole together with Microsoft, because so many of these changes have. Come as a contribution from the community, and Microsoft. People can be lazy and, go. To the. Code. Make sure they're the right thing we have tests and. Essentially. It it it is kind of doubling, the team in terms of how much throughput, we can get but, at the same time with triaging, the issues commenting, on them discussing with the community that kind of reduce the size, of the team by half so, with, this open so and the community engagement we are still the same size of team that we were before rather than reducing, our workload, yes. Is the Royal we, I include all of you in we we are all in this together so. Thanks. Jason, all. Right cool so moving right along to PowerShell core 6.1. This was a release. That was. Very lucky, for me to have coincided right with all my ignite preparations, so. We. We, put this out just a couple weeks ago a big. Shipping feature here we worked very hard with our partners in Windows to. Support, a bunch of the inbox Windows, PowerShell modules. That already existed we, we were able to ship. 1,900. Over 1900, of the inbox Commandments and, make them magically work with PowerShell core 6.1, so, you'll see that in the October update of Windows 10 and in the RTM release of Server 2019, later this year where. If you install PowerShell core 6 1 you're just gonna have a bunch of modules available to you that we're not available before which. I'm gonna show in just a couple minutes, this. Is a really awesome graph, showing you. Know these don't both start at the same time you'll see that the x-axis there is number of months after first release so. Within nine months of our first release we're, up to 1,900 commandlets in PowerShell core and, that grows to 5500. When you include the PowerShell gallery which, was of course not available. When Windows PowerShell first, came out but, you'll see that it really took you, know until our our 4 dotto release a 69, months after, the, initial release our show 3 dotto release excuse me.
A 3.0. Release of power, shell which was 69, months after the, initial release to hit 2300. Commandlets so, we're moving at a much more rapid pace and we're taking advantage of a lot of the the compatibility, offerings, that we get in done that standard and in.net core to, really accelerate. The ramp on which the power shell quarry ecosystem, grows. As. I showed you minute ago speed, was a huge shipping feature in, addition, to what we saw earlier dotnet, core 2 1 has shipped some, major improvements to speed and we expect this to get even faster, going forward after we we turn on this magical, feature called tiered JIT the.net, cor 2:2. What we'll pull out a preview and, so yeah. Just just way, faster everything getting faster. Experimental. Feature flags so this is a feature that got added that. You might not be interested in right off the bat basically. Enables, but, I'll get there to why you'll be interested it, basically enables us, and. Contributors. To PowerShell to. Put features, into the code that, are not enabled, until a user opts into them via a configuration, file so if, any of you use you, know beta software that's out there a lot of times you'll, have these sort of list of flags, I know I know I self host like the chrome dev Channel and you can go and turn on all these individual, features that maybe aren't ready for primetime yet we're gonna do the same sort of thing in PowerShell and this means that we're gonna you. Know rapidly, increase, our agility, in being able to experiment. With features where, we may not have designed, them perfectly yet right we've got this RFC review, for comment process where, we're supposed to you know write a spec that has you know motivation, and how the features gonna work and then the PowerShell community, takes, all the feedback on that spec and you know decides whether or not we're gonna go forward and implement it and what we found is that that really clashes. With agility a lot so we want, to. Have a world where powershell contributors, are able to you. Know put code in the powershell before. The committee is as fully you know reached a consensus, and in fact in a way that might help drive, the committee towards consensus, on whether, or not we end up taking a feature in so you're. Gonna see more of these soon and, there'll be a sort, of page that will detail the the the feature flags that you can enable and. And what, you might want to play with there we. Saw the markdown support, this was a big one and, then again built on top of dining core to one so for any of you developer. Types that. They want to leverage any of the awesome new features like span, of T in. Dotnet core to one you can now you do that in an ad type and. Throughout, the PowerShell language. So. I'm gonna show this one this is a very quick one showing. The increased. Coverage in PowerShell core six one. So. Over here on the Left I have a Windows PowerShell and on the right have the latest powershell core six one and this is running in a Windows. Server 2019. VM from. One of that one of the insider builds somewhere. So. On the left here we have get module list available and, you'll see the count of these things is a hundred and forty-seven modules that ship and, on the right, we. Have 67, of these that are now available and if we look at them you, know all the fan favorites are here we've. Got. Weight. Just, shout it out like what's the number one module, that you guys all use the PowerShell. Active. Directory. Yes, we got it thank you right it's gonna be an hour set it's. Gonna be in Windows Server 2019. You'll, see this this new column that we added over here to mark that these are core compatible, but, we've also got you know a lot of the networking stuff hyper-v. A lot, of the storage stuff has come in and, we expect to keep keep doing these through the next release of Windows and, probably, the release after that so. Again you know we're roughly, half the. The. Commandments, we're gonna go ahead and do a get command to show the same thing here and. You'll, see we've got this this four thousand. And. Over here we've got the the 1900, plus so. This. Is this number we expect. To be much higher by this time next year and, at that point we want to start talking you, know we haven't done any planning here nothing is set in stone but we do want to start talking about how, powershell, core can become the de-facto replacement. For Windows PowerShell and and, whether or not it's ready for primetime so we'll be having that sort of conversation, probably. Around next summer and one. Thing is like there. Was a lot of feedback about when, power. Ship core. 600 was released hey I cannot manage windows with it and people went, through which modules, and Active Directory was obviously proud.
Favorite As well as everybody else so. Once. These models are enabled, there is a specific. Repo, where, you have no option to say I'm, good with all this here the next set of the list so that will help prioritize the team which teams within Microsoft, within Windows go and talk to nudge. Them beat them up use their free whatever way and make that happen for PowerShell, core as well yeah so I unfortunately. We don't think we have a link to that repo in this in this talk, but I will tweet that out after the talk to make sure that you guys know where to go to say hey these are the next modules that I need before I can move to PowerShell core and we're we're starting to work with teams and office365, if, you come into our booth we've got the exchange online module, running inside of cloud shell on linux which. Is really awesome that should be out, at some point in the future so. You know we're really we know that this long tail of modules is is what holds. People back from moving to core and we're pretty committed to solving this problem for you guys. So. Lastly. Just gonna show some charts this is a little, bit more of a zoomed in view of that usage chart that we showed before again. September, you know we haven't hit this yet this data is actually a, week behind so. We think that we're on track to pass five million possibly, six million starts, by. The end of September, and, again eighty percent, of these starts are on Linux, we. Have a couple reasons for thinking why this is it could be that you. Know hey, Windows, users are, good with Windows PowerShell they don't have a reason to move to powershell core, yet and, so we expect, this yellow number to grow as we as we continue adding compatibility. To two old modules, but. We also have, seen some some really. Very. Real passionate, enthusiasm, within. Pockets of the Linux community for. Starting to adopt PowerShell, for some from, continuous. Integration and deployment scenarios. Build, test and and, deployment orchestration. Cross-platform. So. This is really starting to take off with Linux community we're excited that, so many folks are been. Trying it out on on Linux. Another, number that we're really proud of and. And this is really again round of applause to you guys is that half, over, half of the pull requests, coming in to the github project, not that not the long tail of all the DSC resources, and and you know those are are probably well above 50% but this is just PowerShell, itself, half. Of the pull requests coming in are from you guys seriously, I round. Of applause to you guys this is awesome, we have I don't. Know I just I get so excited I kind of emotional, talking about it because it's it's a it's, really just, the the pinnacle, of the open-source model so we've. Been really excited to thank you. And. And. You could check all this out a kms /ps. Github bi all this telemetry all this data is public for you guys to go and poke through on your own time. So. What about Windows PowerShell what are we doing with it what's happening with it like I use it every day what are you gonna do to Windows PowerShell, so. First of all it's important to note that 5.1. Will be the final version of Windows, PowerShell this, is not to say that we won't continue to support it, we've made some security, fixes there over the last few months you, know we fixed some problems with accessibility and, when, support calls come through and there are customer, blocking, issues for. Supported customers we will be serving and sing those for. As long as Windows, 10 is continue to you, know be supported. Is, a lot like CMD, can't ever really get rid of CMD it's gonna be there forever, but. We. Aren't doing any major active, development into Windows PowerShell anymore, so PowerShell core is the future you, know it's where we've got this cross-platform, support, it's, where we're side-by-side and portable we're. Actively developing, new features we, do, have a servicing, model just so you know for for, PowerShell core if.
You Install via the MSI we have Microsoft, update support so all the servicing, updates go into the download catalog, to be consumed with SCCM, and wsus and then additionally, on a client machine you go ahead and check that box that says allow, updates. From other Microsoft, products and Windows Update you will get updates to PowerShell core you. Know when Windows come along, remoting. Support you know we have supported win RM in the old days and, the new days we support winner I'm still but we're gonna add SSH to that that. Matrix and. Then we've moved from down that framework to core and. Of course we support the litany of package, formats that are available on on all the platforms that we now support. Let's. Give it like 10 seconds, for the picture that I know everyone's taking. Cool. Somebody hand it back over to him it to talk about some open SSH, Thank. You Joey how. Many of you guys know what this is it is, now. That tells me I'm my next slide is useless. But, essentially. We. Have our if you, take Windows 10 April update onwards or Windows Server 2000 nine teen, is. Is shipping. In the, windows and that's, basically, the same OpenBSD. Version, of OpenSSH, that works on Windows and that's also a open, source project, that partial. Team owns and works, on openly. Publicly. With you guys so this was the first we'll let you guys already know multiple. Authentication fact, of, mechanisms, key base username. Password one SFTP. SCP, all those are there in Windows, now, and. Here's. A pictorial. View of you can go and turn it on through, and remove a feature or Windows. Capabilities, command lit SSH. Client is on by default that, means from a Windows box you can go and talk to a Linux box easily if you, want the reverse to happen you have to turn on the SSH server which, is featured on demand and then you have to configure it and open your firewall, rules all that is in the documentation, and, a. Big, thanks to the OpenBSD foundation, in the community, to work together to make this happen. And, as. Joey talked about PowerShell. Core supports, to transport. Mechanism, OpenSSH, and VIN RM so, let's see what, that looks like, today. So. People who have not noticed with all the stickers I'm running a Macbook and. It, is running PowerShell core on this and. Let's. See okay in the back you're a. Good. Yeah there's a thumbs up I think okay kukuku. What. I'm gonna do is. Create. A connection, so it's the same command. That you guys are familiar with new PS session the, difference is the parameter is not called host name is, not called computer name it's called host name and that, does PowerShell oh this, is the SSH based connection, so I'm going to connect to that Linux VM that is running on my. Box and, I'm. Going to do the next one which is. Localhost. To our new, back to the macbook itself. And. You. Will notice it says transported. SSH and last. One is. Two. Windows. VM and again here, you will see it's using. Authentication. As basic, but at the same time is using HTTPS, or SSL so.
That Is the only thing that's supported from a MacBook, because MacBook. Doesn't support some, of the authentication mechanisms. Kerberos. And ntlm, are both supported from, the client side on links so, with. The Mac you need to do HTTP, put the certificates, over authentication, basic, but from. Those Linux machines there are more mechanism supported. So. Now. I'm going to, do. Get, PS. Session. Session. And so. Here you have those three connection, to three different operating. System using two different transport, protocols and, most. Of you know what I'm going to do next which. Is. Invoke. Command. So. I'm going to invoke a single. Command across, those three sessions, using. A script block. And. Find. Processes. Which have working, set greater than 20 megabytes and here. You have a single, command reaching out to two different operating system from powershell. Core and if you don't believe my answer I. Can, even go and show you group. By. Property, called, PS computer, name. And. Here. You have different, number of processor than running on different operating system so, that's your PowerShell, core remoting, across. How. Many of you are know. The term powershell gallery. Good. For, people who don't know about it it, is the place to share and acquire, your PowerShell code that means you publish your modules and script, to PowerShell gallery and since, we want you guys to be lazy. You go to the PowerShell gassing download those modules and script you don't have to rewrite what. Community. Has already done with, PowerShell, or reinvent. The wheel. And. If. You have recently visited PowerShell. Gallery it has a new UI, refresh. So it looks more modern. And not old-school, so, let me show a demo. Of that. So. Now. Moves to a new get, v3. Based feed for any of you that are new, get junkies so here is your new powershell, gallery, and you will notice one. Thing a, couple. Of things first of all number, of downloads since. It has previewed. Or release in last three years is over two hundred and thirty-five million. Two. Hundred and thirty-five million a week ago it was our ten days ago it was two hundred and twenty five million so. You can see how vast, is used this. Is your launching. Page you can come pick up any particular, module. Again, more. Cleaner view here and not, just that you have easy. Way to say, what's the command I need to do to install module, or. Deploy. To your automation, and lastly, the new thing is you can manually, download the, new. Peg, file or new pkg, file there. Are two scenarios at, least for this one, is if you are still running. On PowerShell, to dotto I hope, not, but if you are still running partial to dotto where you don't have PowerShell. Gate which is the client side which interacts, with the gallery you can download this convert. Into a zip file and do, all the magic that power shall get does but, it's, hard work you cannot be lazy in that case, second. Scenario is if. You want to host your own private, gallery and you want, to say this, is my gallery I want, to download stuff from the public gallery but the ones that I want I vetted I've seen the code because I want everybody in my company to use it you, download this package directly, and don't put it in your private gallery earlier. You had to download as a module, then package it again as a module not, needed but, this does not replace. This. Does not replace install, module, and all the benefits you get from install mod you'll find module, publish, module so just be aware and, that's, what it's been called out first. Another. Change. Which is about PowerShell get and I will not show, that I, find. It the, text time or maybe I'll show it is. Power. Shall get with install module by default, it used to install in a system, by location which means you need to be elevated. Just. Like Joey showed with update help you don't need to be elevated now with version 2 of power shall get it was a breaking change so we went from 1.6, dot 7 to, not, 1.6 dot 8 to, 2 dot oh and right now it's 2 dot or dot 1 you. Have by default install. Module will install in users home directory rather than system-wide, you. Can still go with the scope option, and do is system, bite but, that's a change in ur script. So. That's your PowerShell gallery again numbers. 235. Plus million downloads 39 hundred, plus unique, items. And if we looked at this data the last line is not available publicly because, we. Haven't made it publicly, available is number. Of unique owners, people who are publishing these modules and scripts is over 3500, already Oh No 1350.
3500. Is where you want to go. And. Here. Is the chart of the usage of our shell gallery, you will see from February, just has taken off like anything. It, has reached the peak of 27, million downloads per, month, for, the month of June and July August, was down September, numbers are not there till the end of September, I know. After the session, those will go up everybody, will download things and. This. Gallery is not about Microsoft, or Windows it's about the, community, whether it's a sure whether its AWS, whether it's Dell again. All those, partners. And. Enterprises. Are using, the PowerShell gallery as the. Place so if you're not convinced, so far here. Are the numbers and lastly. You have PowerShell get. To. Interact. With the gallery directly. Okay. How many of you have used cloud, shall have heard about cloud shell. Good. So. I'm not going to go. Very deep I'll. Go a little bit deep tomorrow there is a session specifically. About cloud shell your power shell in your CLI, I think, it's about 12:30. Or 2:00 o'clock, somehow something, like that in the same room you should go there for last slide at the end and. Today. Or this week or early last, week vg8. Powershell, core or partial. In your cloud shell and it is running on a Linux, operating system. With, PowerShell course 6 in the browser and. The. First question when. We talk to a couple of people oh it's running in the browser like why. So. What so. How many of you enjoy, downloading, latest version for your modules or any modules, on every, other week or. Want. To say oh I want to do something but I am. NOT in the right environment I should be because it's on that box already this. Is so like obtaining, stuff I love updating stuff so. That's what cloud shell is about this is your. Environment. In the cloud because it provides you with authenticated. Access you log into Azure portal, cloud, shell will not ask for more passwords. You. Have choice of shells it's not just PowerShell you also have option to go and use bash your. CLI, works in both of them but people, coming with different background, and different preferences, have the option to pick those. It. Comes with its own file share so you can save your scripts, and use. Them the, home directory is persisted, across both. The, shells. And the cloud drive which is your files you can even mount it locally, on your Windows box and I'll show you some. Of it and lastly. It comes with common, tools whether it's a, symbol. Whether its gate whether its swimwear, that, those. Things are there as a set and, they. Are managed. And updated by Microsoft, so you don't have to worry about which. Version is it the latest one or not again. Goal. Is to make you guys lazy so you go to the cloud shell you have the latest version of of your PowerShell, as you, see alive and all the tools and. Lastly. It's, integrated, in various, experiences. If, you go to docs.google.com. To read about your. Documentation. You'll, have a try it button it's. Not there 100% we, are working through but, you have an option to say here's, the code I can actually play, with it right there with my documentation, so your learning becomes better. Vs. Code you. Have PowerShell experience, in vs code you also have, the, cloud shell experience in vs code and people. Who can type fast on a mobile app they, can also use cloud shell on the mobile app I'm not one of those. So. Let me go, into the demo. Sometimes. You just get that phone call on call you just need to restart the damn thing and just kick it right so you just pull up your phone and so this is restart this is the favorite, your. Portal, one, thing I learned I don't know how many of you know L you can go and double click and change, the color of your background. Magically. Lazy. And. If cycles through so. This is and here, in the top is your, icon. People. In the back and see this, font. Size is good enough okay, here. Is your icon, for cloud shell you. Launch it it will remember your last setting, whatever. Shall you launch the last time and. Last. Time I use PowerShell, I'm gonna give you a little plus here sure, control, twice. And. One. Thing you'll notice as soon as the cloud shell opens up in the PowerShell environment, and let me just give, you the here. The drop down which gives you the option to switch to bash as well is.
It. Will build something, called a jewel drive and this. Is your. As. Your view as a file, system or very close to file system, so. When. You go and do it there, what. Do you expect it to give you it's going to give you all the, subscriptions, and, then. You can go into a specific, subscription. And. It's. Going to talk to Azure and get, you all the. Resources. And, then there are certain views you can get a resource, group view or a virtual. Machine view are web. Apps and so on and this is an extensible, system. So. That's one piece the. Second piece is you, have the, stand-alone, shell. Dot azure calm, so, you don't have to go to the portal. Bug. You. Don't have to go to the portal and UI. If you want just the fullscreen you can go to shelter your calm and you have the option to say shelter your dorm slash PowerShell. Slash, bash to go to a specific shell. And. One. Thing, is. You. Have files your folders, definitely. You want to upload and download here, is your, two options so they upload, and download. But. This, is modern, world you don't want to right-click, do, things you can just drag and drop your file has been uploaded for you. So. Here is hello world not PS not one so I can go to my home, and. Here. Is a file and. Obviously. I want to download but I'm PowerShell, guy lazy so, I will just do export, file. And. Here. You're downloading is going. To start and you're down what has happened so again no clicks you. Can do it easy in in a modern way. Okay. I. Think. We have time I will show you something, that is cooking. But not ready to. Be eaten so. You. Will see a lot of things here because the shell my. Initialization. Scripts are gone so. I will initialize it again and obviously, it's not. Canceled. It's working. Let. Me restart, this. Is work, in progress so, don't. Think this is the final view or this is the final way to interact with things. You. Need power. So. You have PowerShell this, is a specific account if you notice it is office.
365 Account. Again. Same PowerShell. On this, account I have already uploaded. Something. Which is baking in the oven. DLL. And. Modules. Here. Is your get. Command, major. And. You. Will see there are about 4000, commandlets, or 4800. Some of them are aliases, so that, number is not actually 4000. What. I'm going to do is. Something. Dirty and yucky, don't quote, me on that there. Is some script, and, now. I have. Connect. Ex opere session. -, identity, remember I have not authenticated, anything except, logging into the total and this. Is going. To talk to exchange online server, do, implicit remoting, bring in all those, commands, into your cloud shell so, you have a single, way to, manage your exchange even, using that browser. And. This, is a lot of hard work done by exchange team they they, they, their, team is split across continents. Different, time zone and they have worked, really well with us to make it happen but, right now it's not in a place where it can be given to you guys so it if you try to do it you'll not succeed. It's a specific version, of a specific module but, the, work in progress it'll, happen and. Now. I can do get command major and you will see that, number of 4800, has gone up to 55 so about, 700, more command, lists you are getting and you can. Do, get. Mail box. Set. Mail box all, those, stuff. Oh. One. Last one since, we are on, PowerShell. How. Many guys, are still, on ISC, for editing their files. Not. Bad it's okay to raise your hand so we're, not getting rid of the ISC don't worry it's gonna be there forever just like Windows PowerShell. But. Again same kind of thing we're not gonna be making major, feature enhancements, there right so we've, been able to take advantage of all of the good stuff that's been going into vs code things, that you guys have been asking for for years you, know folders, support, JSON. Syntax, highlighting, you know get integration, all these sorts of things that vs code already does phenomenally, and then we just drop in a PowerShell extension, that. Is able to give. You the ISC like experience, for, PowerShell itself so I think, you guys saw me using that a little bit earlier I was using my standard, f8 you know for that run selection, and, that was bringing it into the prompt below me Haman's, pulling up a food IPS 1 so you'll see as soon as you open a ps1 file it's gonna go ahead and automatically, start what we call the PowerShell integrated, console, this, is different, from the built-in consoles. Running PowerShell, or CMD or bash on w cell from. Within vs code you'll you'll see it called out here as the powershell integrated, console and what that means is that the editor is, talking, to the run space so, for instance you, know just like you would expect in vs code so if I say dollar a equals 1 and. Then I go ahead and run that command that's. Going to run it inside of the integrated console, so that when I say dollar a I get, that up here right and if I you, know if I define a function here like foo and. This calls a 2 you know that I now have. Foo. Is available, to me in my tab completion up here in the editor just like you'd expect in the ISC right so this, thing supports remote debugging remote. PS edits you've, got this awesome feature, which we can't really show on the MacBook but. In the lower right hand corner you'll see there's a little actually. We should make this much much bigger. But. You'll see in the lower right hand corner this this you know 6.1. Icon and I can click on that on a Windows, machine that's gonna show me Windows PowerShell like, 64. 86 if I have multiple versions of PowerShell like the preview side-by-side, with the stable version I'll have those to switch between so this, is really where we're, putting a lot of our innovation, in the ISE like experience, and.
And Is, really the cross-platform experience, that, we'd like for you guys to start using if, you haven't already so definitely. Definitely give it a try if you haven't and people who are not. Convinced, this, is good, enough in. The last release is when the team declared, the. Vs power shell in vs code extension, is at feature parity with ISC and feature. Parity means it can do everything that is e does plus, more and one, thing that I really like again. The notion is becoming lazy that's how people write scripts right get process where and percentage. And quotient, mark all those aliases, you, have script analyzer built into, this experience, which tells you hey, we're use we're objects, because we're can be overwritten people, and you. Can go and click it and there is a light bulb it'll, go and fix it for you as well. So. That's. Something you cannot do with iousy. And. Lastly. If you are still not convinced. If. You, are still not convinced, or you are having difficulty, convincing your. Colleagues. And other people you can, always change the theme to PowerShell ISE, and say this is the new ISE. And. Obviously the script pane or the command pane also looks blue so it's white and blue it's like oh this is the modern iousy and they'll they'll they'll get convinced. One. Thing you will notice is. Since. It's extensible. Control. Control. Command. Shift P Macbook, he's a winner's guy yeah. You, have the option, to even. Run your cloud, shell directly. From here, you, can have the bash version or, the PowerShell version when. You connect it opens, another. Console. In the back, and it is basically talking to the same, instance. That you talk you, obviously need to be authenticated, and in the bottom, you'll see this, is authenticated, already as me so. You have the same experience almost here, and. There. Is your, storage, so are your storage lets you see your file shares so you can go and let. Me see here, is my, storage. Account I can go to the storage account go. To specific, storage account there look at my files and, click. Them and you, can pick any file. It. Opens, locally, for you they download it for you you make changes, and say save it'll publish back for you so again if you want those file systems, to be available and do it locally.
You. Have that option you can mount that as your file shared directly, on Windows, Mac and Linux as well as a local system or local drive and that also works. So. It's an excellent segue into our recap. Here. About. The themes we were talking about before hopefully. You. Guys in seeing all that with cloud shell vyas code cloud, shell envious, code we're on a macbook we're on a Windows machine we got ask the sage we got win RM that's. Ubiquity. That's what we mean right, so we're supporting everywhere. We've got cloud shell everywhere, we're, integrated, envious code Doc's not Microsoft comm you. Guys shouldn't have to look far to find PowerShell, in the matter where you are on your cell phone right just, be able to pull it up you've got PowerShell. Agility. Standpoint, you know we've got a ton of stuff packed into this talk we're going faster, faster faster we should have two versions of PowerShell core this year I'll have another one coming out in six months you, know the gallery, ship, and release is vyas code ship and releases you, know cloud shell is is updating, that stuff in the inside of that container so, you don't have to you. Know we're just we're, moving really really quick, and, that's again to keep up with with the pace of the world around us and and the pace at which you guys are transforming. Your organization's. And. Lastly, you know our favorite theme of course is. The community engagement right it's the fact that you guys have filled this room the fact that you know we get to see smiling faces at the booth. Happy. People sometimes. Mad people on Twitter github, but, but all in the spirit of making the products better. You. Know there's all these user groups that you guys have you, know virtual, user group hosted in slack and discord, everybody is on Twitter so, you know if you haven't jumped into the community yet you know it's never too late we're.
All Over the internet and and, you know come come join us on github or on Twitter or Stack Overflow and, come, tell us how you're using PowerShell and how you'd like it to be made better and one. Other aspect with, PowerShell community, is these powershell conferences, so if you are not up to speed with powershell there are three conferences, that happen a year around one, in u.s. powershell and devops, summit, i got, it right PowerShell. Conference, Europe which, this. Next year is also happening in Germany and then there's partial conference Asia which happens in October time frame so, you, have opportunity. To go present learn, interact, with people as well as have people, across the world come and work together and. We, love attending those conferences, you'll find some. Of us always at at. All of them so. I know I know him it's gonna be in Singapore just later, next month so. Yeah. So so just a quick recap you know this is everything we've announced here, in the last year you can you. Know follow these hyperlinks to get more information on everything we've been talking about but. Of course all of you want to know I'm sure what's. Next great, you did a bunch of stuff we're moving fast right like what do you guys doing after this, so. First, of all more integration with Azure services, you're gonna see more and more of this you, know we're both part of as your compute you. Know we think asher is an amazing cloud and we want to want to keep making sure that powershell is enabling, its success, so. To that end you, know if any of you caught the the automation and functions talk we've just started adding support in, Azure functions, 2.0, for PowerShell core a lot of that work is being done by the PowerShell, team hand-in-hand with the as your functions team so. It's gonna look a lot different than the experimental support that you saw in the Azure functions, 1.0. Runtime and we don't have an ETA for that today but. But that's, that's a really big thing for us we know you hasn't been asking for that and, so we're gonna make sure that that gets done right inside as your functions and keep your Twitter. And keep checking it there is a, private. Preview of PowerShell core, inner your functions coming soon sometime and once, we have it will onboard people get their feedback what, works for them what doesn't work for them you, guys, are doing PowerShell on a daily basis you you, are the best customers. We have and your. Function team is all we already envious, of us like oh you, will do private. Preview and so many people will come and how do we scale so, don't worry about that aspect that's our problem not your problem. We've. Also got you, know more of this ssh innovation, is gonna help drive remote, management of azure VMS, both windows and linux you, know we don't have anything concretely, to share here yet but but we do know that you, know we want it to be easier for you to get into your eyes your VMS using PowerShell once, they've been created. Partial. Core 6.2, this is the next release that's that's coming down the pipeline in the next six months we. Did ship six one a little late we had committed to a, six-month. Cadence, and, we're coming in you know eight to nine months instead of six a lot of that was because of the windows work that we that we ended up doing to. Get all those modules up and running but, we also thought that it might be a good time for us to switch to sort of a spring. Fall, cadence, like a lot of these releases, are line up roughly with the conferences, so you'll see this coming down the pipeline probably. In the March April timeframe, you. Know the can. Change but. The the focus here is primarily gonna be on stability and quality we do know that there's not gonna be a whole ton of stuff coming into this if, there are major feature additions we, will be accepting those from the community, and we know that people are working on some of those some of the cool stuff is gonna come from you guys but, we know that we need to focus on our release automation you. Know we have to make sure that we're able to continue, scaling to the large number of distros, and versions that we need to support in PowerShell and, then.
We're Gonna continue working with the partner teams in Windows, Office you, know there's an in tune module. That we've been working with that team on to. Get supported in in cloud shell so. You. Know we know that coverage is really the number one thing at this point holding, back powershell for adoption, and we're gonna make sure that we're committed to that as a number one priority. With. PowerShell and cloud shell is just more, schools more modules, is gonna be going into that thing you saw a little tease in the exchange online stuff that. They've been working on and. Then envious code we know this is one of the major asks, that's. Been coming from I believe. Patrick. He's seemingly science, on github he's, been helping out majorly with this but. We've been doing some refactoring working, the vs code extension together to support PS, read lines so that integrated, console while you might get the PS read line support in the, regular vs code console the one that hooks up to the editor there does, not have the PS read line support yet and, we know that's gonna make your job a lot easier when when that comes. Lastly. We've. Been working with open BSD for a really long time the open BSD foundation, on our OpenSSH, work our hope, over t