PowerShell cross-platform scripting and AI-infused automation | Ignite 18

Video Statistics and Information

Video
Captions Word Cloud
Reddit Comments
Captions
(intense electronic music) - Coming up, we're joined by the inventor of PowerShell, Mr. Jeffrey Snover, to take a look at the evolution of PowerShell as the de facto automation scripting tool across Linux and Windows platforms. The latest editions to Cloud Shell, including the ability for Visual Studio Code to run PowerShell inside of Cloud Shell, and how you can leverage the cloud with PowerShell to protect secrets and harness Azure machine learning, to advance management scenarios. So, please, give a warm welcome, to Mr. Jeffrey Snover, the mastermind behind PowerShell. (raucous applause) - Thanks so much Matt, great to be back on the show. - It's great to have you on the show all the time. Now, last time, we had you on the show, we covered Azure Stack, woo! Today, we're going back to your roots, with every IT pro's favorite tool, PowerShell, which is now playing a very important roll in the cloud. So, can you tell me a bit more about the evolution? - [Jeffrey] Yeah, so, when we first developed PowerShell, our goal was to make it easy for you to automate your operations, to increase the quality, and in turn, to free you up to higher level tasks, higher value tasks. Now, with Azure, we've entered a new era, where your PowerShell skills are even more valuable. Your skills and value, now extend beyond Windows, to Linux and MacOS environments, using PowerShell Core. This gives you a cross-platform scripting from anywhere. At the same time, the traditional PowerShell experience gets even better because of Azure. You know, so for example, password management, right? Often we write scripts that need, you know, the cmdlet needs a credential, a password, and how do you manage that in your scripts? You don't wanna be putting clear text passwords in your script, so we sometimes have to, you know, that's difficult to manage, and sometimes we have API keys, et cetera. So this can be pretty difficult, and I'm gonna show how you can store this stuff using, in Azure, using Azure Key Vault. Or another example would be, sometimes you wanna run a script, on a large set of machines, or a script that's gonna take a long time, and so what you can do is, you can run that script using Azure automation, to operate against all the machines, be they in Azure or on premises with hybrid workers, and frees you up from the local session, 'cause if you invoked it from your local machine, it would take a long time, and you couldn't, you could never go home, okay? So, also using Azure automation, it gives you full logging, and offers very rich scheduling. So, PowerShell gets better because of the cloud. The on-premises PowerShell experience gets better because of the cloud, right? 'Cause it's managing my keys, it's formalizing our team's automation, and also, moving forward, there's the advantage of being able to take advantage of Azure's artificial intelligence APIs, available through REST APIs, and you can incorporate those into your scripts to do on-premises management even better. - Cool, and obviously it makes things even more intelligent, and a result of more cross-platform coverage, more people, namely Linux operators, are getting exposed to PowerShell potentially for the first time. - Right, so, if you're new to PowerShell, it's pretty easy to get started. PowerShell has the verb-noun syntax. - [Matt] So, if you wanna do something, you just ask it to do it. - [Jeffrey] Exactly, you think about what you want, you type it and you get it. So imagine you wanted to get all the processes, where the working set was greater than 30 megabytes. You think about what you want, you type it, you get it. Or imagine, you wanted to get all the processes, where the working set was greater than 30 megabytes, and then sort it, by working set, and then you wanted to format that, as a table, using the name and the working set. Again, you think about what you want, you type it, and you get it. Okay, now this is not like traditional systems, right? Traditional systems pipeline, what? They pipeline text, and when you pipeline text your life's a misery. No, you have to do very complex, what I call prayer-based parsing, right? Cut off three lines, go over 27, is it 27 or 28? Is there a tab in there? Oh God, so prayer-based parsing, very difficult, very fragile, if anything moves around, all your scripts break. PowerShell, on the other hand, pipelines objects, and what that is, is it allows you to think about what you want, type it, and you just, it just gets done for you. - [Matt] Very cool indeed, now for people who are new to PowerShell, where do people go and get these cmdlets from? - [Jeffrey] Right, so, a variety of sources. The core ones are gonna ship with PowerShell itself. Next, Windows ships with a bunch of PowerShell cmdlets, and they also ship with the products that support them. So, for instance, it's Exchange, SQL, SharePoint, Teams. They all ship with their PowerShell cmdlets. And, the amazing PowerShell gallery, right? The PowerShell gallery is where teams and the community ship their latest and greatest work, their scripts, their modules, Desired State Configuration resources, and they keep them up to date in the modules, so that's always a place you wanna go check for things. - Nice, great, thanks for the quick tutorial, and background as well. So, for the hardcore PowerShell users out there, of which I'm sure there are many in the audience today. (audience member shouts) Yeah, exactly, woo! Let's dive into some of the new stuff. - [Jeffrey] Great, so I mentioned to you, we now have PowerShell Core, right? So we introduced this in January of this year, and we just shipped PowerShell Core, version 6.1. Right, so awesome. This thing now, it's open-source, and works on Linux, right? So, you can manage Windows, you can manage from anywhere, Linux, Windows, MacOS. You can manage any OS, running in any cloud, AWS, Azure, Google, or on-premises, using any hypervisor, Hyper-V, VMware, or any physical server. So, let me show you an example. Okay, so here, say get process star S, see all the processes, and now what I'm gonna do, is I'm gonna create a session to the local host, okay, using SSH, and then I'm gonna create a session to a Linux VM, using SSH, and now, a third connection, to a Windows VM, using WinRM. - [Matt] So to clarify, this is three separate sessions, one, back to the local machine, which is actually a MacOS, one, to a Linux VM, and one to a Windows machine. - [Jeffrey] Exactly, correct. - [Matt] Nice. - [Jeffrey] And if I can figure out how to, what my password is, it'll work just fine. - [Matt] It shows it's secure. - [Jeffrey] There you go. So, get Pssession. - [Matt] So you're just gonna return a list of the current sessions that you've got established? - [Jeffrey] Right, so there you see, the three run spaces, different protocols, different operating systems, right? Three different machines, and then what I can do, is I can do an invoke command, dollar sign S, dollar sign S, get process, oh you know it, it's GPS, star S, and voila, I'm using one command, one syntax, to get processes from three separate machines using different protocols. Boom, you know, if I had a mic, I'd drop it, but it's pinned to my shirt, man. This is the world we've wanted to deliver to you from the very beginning, so we are very thrilled about this. - [Matt] This is awesome, and now, I'm curious, and I'm sure many other people are as well, with PowerShell now open-source, what's the reaction from the community been like? - Well? (audience applause) Yeah, it's been fantastic, really fantastic. You know, we're open-source, and so there's this thing called a pull request, and that's where you change the code. Over 50 percent of the pull requests for PowerShell version 6.0 and 6.1 have come from the community, okay? So it's doing fantastic. - [Matt] Awesome. - And then we've had over four million instances of PowerShell that have run since August, and over 80 percent of that usage was on Linux. Alright, so, I mean, we knew it was gonna be popular, but we had no idea it was gonna be that popular. - Yeah, that is a huge adoption on Linux, in particular, but what about the specific distros that we support, tell us more. - [Jeffrey] Yeah, so obviously we're supporting the right distributions, right? So here's a list of the distributions that we're supporting. It's a very large list, the most popular distributions, and the community will also support additional distributions, and that list is there as well. - [Matt] Right, so it's popular, and Cloud Shell and Azure now have support for PowerShell Core, so that will open up even more opportunities for people. - [Jeffrey] Yeah, exactly, if you haven't tried it, this is just freaking crazy, right? Anybody use Cloud Shell? No, okay, well you gotta try Cloud Shell. Check this out. Okay, so, Cloud Shell, here's the Azure portal. See up here, looks like a PowerShell prompt? Guess what, it's a PowerShell prompt. Click it, you get PowerShell running in a browser, okay? So now, maximize that, and so, here you go. And so now, PowerShell's running in a browser, you can store your scripts in the Azure cloud drive, and then PowerShell can use them to manage and deploy and troubleshoot, you know, all of your resources anywhere, right? Anywhere you have access to a browser, even your phone. - Now, you've launched PowerShell within Cloud Shell there, and it looks like you're in an Azure root drive. Are you in the root of Azure? - Yeah, actually that's right, so what we've done, is we've exposed Azure as a drive. So anybody have any troubles keeping track of all their Azure stuff? Yeah, boy it's complex right? So here, I do a dir, and we've surfaced Azure subscriptions as a directory, so I do a dir of the subscriptions, and now check this out. I'll cd into one of the subscriptions, and do a dir, AllRescources, ResourceGroups, StorageAccounts, VirtualMachines. Cd in VirtualMachines, do a dir, and there are all my VirtualMachines. And you get objects right, so dir d star, dir pipe to group location. I mean, ahh, it's fantastic. - [Matt} What do we think? (audience applauds) - But wait, it gets better, because, (audience laughs) Ginsu knife man, now how much would you pay? But it's free, is that crazy? Anyway, so, in this Cloud Shell, what we've done is, we go and we collect all the latest and best versions of the tools we think you're gonna need to manage your cloud environments right? So, there is vim, there's git, there's Jenkins, there's Python, Terraform, Inspect. - [Matt] AC cmdlets, as well. - AC cmdlets, yeah, so it's just fantastic. So, check this out. So, I'll get command, I'll get the cmdlets and functions, and we've got over 2,300, nearly 2,400 cmdlets. Again, a great toolkit, and when a new version of a tool comes out, you don't have to, you know that problem right? Oh, I heard there's a new version, oh where is it? Is that the new version? Do I have the new version on the right machine? Oh, this has the old version. You go to Cloud Shell, it always has the latest and greatest tools for you. We provide that for you. - Well what if you want more? - Right, so then, well, what if I want more? That's an excellent question, Matt. - Thank you. - Well, where have we talked about where we might be able to get more stuff. Say, from the community. Right, so here I'll do a find module. Now, here, you'll wanna use the tag, PSEdition_CORE, that gets you all the modules that support PowerShell Core, and I'll get the ones, I'll filter out all the Azure ones, 'cause there are so many of those, and you'll see, ignore that, that warning, - [Matt] Here we go. - [Jeffrey] It just starts flowing. So there's a ton of these things. - [Matt] So, that's a pretty big list. - [Jeffrey] It is. - [Matt] Nice, and yeah, a fine selection there. And I can see quite a few useful things in the gallery, but do I have to download the scripts each time, or can I store them somewhere? - Yeah, you do not have to download these each time. In fact, everything that you store, in your home directory, in the Azure cloud drive, in the Azure portal, everything that's stored in your home directory, gets saved across sessions. Now, those sessions, you can use PowerShell or Bash, and everything that you've downloaded is available to both environments, and there's a special drive, the cloud drive, that's a flavor or Azure storage that's available from everywhere, so things like the storage browser, you can access things to upload, and download artifacts from there. - Awesome, lots of powerful stuff there. Now, we've shown running PowerShell on the Mac, but how do you write scripts on there? 'Cause there's no PowerShell ISE. - [Jeffrey] Right, right, okay, so the Macintosh does not have PowerShell ISE. That's a WPF application, it's not gonna work on the Macintosh. That's okay, because we have, Visual Studio Code, running on MacOS. MacOS, Linux and Windows, just fantastic. And it's the real deal, right? So here, I've got a very simple PowerShell script, but notice the squiggle brackets right? And so when I take a look at the squiggle brackets, click over it, it's telling me, oh, Where does not follow best practices, best practices is to be Where object, and so I should modify that. Of course, being a PowerShell user, I'm, what? I'm lazy, so, there's this button here, the little light bulb, and I click on it, and it says, oh, I'll fix that for you. I said, yes you will, thank you very much. And it goes and fixes it for me. - [Matt] Nice, and my favorite in Visual Studio Code, if anybody's new to it, PowerShell document, right click, format document, again the laziness, it will just sort out your formatting, and make it look perfect, which is great for a lazy PowerShell person like me, as well. Excellent, now, this is working on your local machine, on your Mac, but what about if you wanna write scripts in Cloud Shell? - [Jeffrey] Right, right, so what if you wanna write scripts in Cloud Shell? Well, of course, you've got, you know Vim, and things like that, you have eMax, if anybody can figure out how to exit eMax, you should come up and tell me afterwards, cause I can never do that. But here I am, back in Cloud Shell. I'll cd, check this out, you ready for this? - [Matt] I'm ready. - [Jeffrey] Visual Studio Code, running in the browser, how crazy is that? (audience applauds) - [Matt] It's awesome. - [Jeffrey] Yeah, so let's get this in focus, right? 'Cause this is just crazy. I'm on a Mac, I'm connected to a Linux environment, running in a container, via a browser, via Chrome browser, and I've got my PowerShell script open, and it's a completely familiar experience to me, a Windows guy. You know, who would have imagined that Microsoft, we'd be delivering this experience to our customers, but the reality is, when we talked to customers, they made it clear, they have a heterogeneous world, and they want a single tool-set, that their entire organization can use, and solidify, so that everybody can come together, learn one tool, to manage from anywhere, and manage anything. - [Matt] Exactly, now in all these cases, we've been showing PowerShell Core, but what about Windows admins, traditional Windows admins where, are they gonna get the same coverage that their used to with PowerShell? - Right, so PowerShell Core is based upon a new version of the .NET Core, and so there's reduced functionality at the beginning, but right now, we're moving, we've done very great work, and we are working very fast. So, about 60 percent of your Windows modules already work natively on PowerShell Core, so let me just bring up RS5, and show you where we are. Okay, so this is a virtual machine, showing RS5, okay? So, here is PowerShell version 6.0, and what I'll do, is I'll say, get-command, but wait, just to put this in focus, when we shipped PowerShell version 1.0, we had 128 cmdlets. When we shipped PowerShell version 2.0 a couple years later, we had about 250 some odd, and then PowerShell version 3.0 was when we finally got over 2,000, okay? But that was, many, many years later, so here, ten months after we shipped, we run get-command to measure, and voila, 1,900 cmdlets, and these are your most used cmdlets, so we're doing great, but wait, imagine I went to, - [Matt] Where can we get more? - [Jeffrey] Where could I possibly get more? So I went to the gallery, and I downloaded all the ones that support PowerShell, and now I'm gonna add that, so I loaded them to a directory, CommunityModules, and I'll add that to my path, and I'll do it again. And now we have 5,400 cmdlets, okay? So, over 5,000 cmdlets, running on PowerShell Core, just ten months after its release. - Awesome. - You will see this continue to accelerate. (audience applause) So, as more, thank you, as more teams develop cloud services, and et cetera, they're developing PowerShell modules, so as they come online, teams, et cetera, their PowerShell modules will be available on PowerShell Core as well. And, we've been clear about how to write these modules, so that you don't have to pick. They write these modules in a way that will work with PowerShell Core, or full Windows PowerShell. - [Matt] Awesome, awesome stuff, now, there's lots that PowerShell brings to Azure, and other cloud services, but you mentioned before, that the PowerShell experience is also getting better because of Azure, so, can you take us through what you mean there? - Yeah, exactly. So, let me, find Visual Studio again. Okay, so, here is a module that I wrote, and basically, this is a module that we wrote, that stores keys in KeyVault, okay? So, what I'm gonna do is, one time, I'm going to get my credentials and I'm gonna save them up to KeyVault. So, if I can remember my password correctly. - [Matt] So this scenario would be beneficial, rather than post-it note passwords. - [Jeffrey] Yeah, right. - [Matt] Or clear Text. - [Jeffrey] If you're putting passwords on post-it notes, please tell me your company's stock ticker, so I can short it. Okay, so, now here, once, we took my credentials and I stored them up in KeyVault, super safe. Now, imagine, another script, on another machine, on another OS, I'm gonna go and I'm gonna get that credential, and then, remember when I was connecting to everything? With, when I did SSH, I didn't have to provide my password, but when I used WinRM I did, so now what I'm gonna do, is I'm gonna do the same connection to WinRM, but I'm gonna provide the credential that was stored in KeyVault, so I just select this. It's retrieving it from KeyVault, boom! I got a connection, happy days. (audience applauds) And because it's managed in KeyVault, I can change it, you know, I can update it, once all the scripts get it, none of the scripts see the password. If I want to, I can give permissions to other people to access it, and not. - [Matt] Yeah, so you're securely controlling access to that, those credentials, but it could be certificates and all sorts of sensitive information, but you can use it for deployments of Vms and applications and all sorts, which is cool. Now, of course, with Azure, comes the intelligence of the cloud, but what can you do now to create more intelligent scripts? - [Jeffrey] Yeah, right, so the great thing about Azure is this wealth of services available to you, all through REST APIs, so in PowerShell, accessing the REST API, super simple. So, what we did was, we wrote some module that does that, right? And, so what this is, is a module that does accesses the machine learning anomaly detection API. So, imagine this scenario, you've got a bunch of web servers that are collecting all these logs, and you know, potentially you have anomalies that happen. Right, as perhaps you're being DDOSed, or attacked from a particular location. Well, you could go through all the logs and manually inspect for things, that's not gonna work, right? So, here what I've done, is I've collected all those logs in a CSV and what I'm gonna do. - [Matt] So you've got a CSV file on your local machine. - [Jeffrey] I hope I do. - [Matt] that you've collected this data in? Somewhere. - [Jeffrey] Well, let's see if we can find our CSV file. - [Matt] There it is, MLReady. - [Jeffrey] Is it there? - [Matt] Yeah. - [Jeffrey] Okay, that's the one I want. Well. Voila! - [Matt] There we go, we found it, on the fly. - [Jeffrey] You might have heard this, but it's true. PowerShell is so powerful because I'm such a deeply flawed human, and I could build a system that compensated for my weaknesses, that's why wild cards are everywhere. Demonstration taken. So, I've found that CSV file finally, I take that CSV file, I hand it up to the machine learning API, it returns things. These two here, are showing areas where anomaly was detected, okay? So, I got that data as a merged object here, and now, what I'm gonna do, is I'm gonna say, now, find me the date associated with the anomaly detected by Azure's machine learning. Shows me these dates, and then, I've got another script that says, now, grab the AnomalyDate, go back to that anomaly information, and find me the IP address that's creating the anomaly. And voila, there, you know, we have a large hit count from this one IP address. I can take this and now go investigate, find out whether it's a normal user testing something, or whether I've got a malicious actor attacking our environment. - And you could use huge numbers of logs in Azure ML server. - Yeah, exactly. (audience applauds) So, the great thing is, Azure has all this fantastic capabilities that's now easy to access from PowerShell. - [Matt] Great, well thank you Jeffrey, for bringing us up to date. It's good to see all the latest PowerShell advances, I think we can all agree. Now, how can everyone learn more. - Yeah, the best thing to do is, number one, go to Microsoft.com/PowerShell. Number two, attend the Ignite sessions, the most important one is mine, and do what I did here today. Open up a PowerShell window, and start hacking around. Make mistakes, don't feel bad about it. The inventor of PowerShell makes mistakes all the time. Just make some mistakes, have fun with it. - [Matt] Yeah. - That's how you learn. - [Matt] Use VS Code, use Cloud Shell, all of those new things as well. Fantastic stuff, well, thank you for your attendance, keep watching Microsoft Mechanics for the latest tech updates, and check us out on Twitter. Thanks for watching. (audience applauds) (upbeat electronic music)
Info
Channel: Microsoft Mechanics
Views: 12,384
Rating: 4.9411764 out of 5
Keywords: PowerShell, microsoft, cloudshell, Linux, Visual Studio Code, Azure Machine Learning, Cross-platform scripting, IT Automation, Jeffrey Snover
Id: 1EVHChiqZOw
Channel Id: undefined
Length: 25min 13sec (1513 seconds)
Published: Sun Sep 30 2018
Related Videos
Note
Please note that this website is currently a work in progress! Lots of interesting data and statistics to come.