Implications of Powershell Going Open Source

September 26, 2016  |  Joe Gray

I make every effort to be thorough and hit every aspect, there are times that I inadvertently omit things or skip them due to scope, time, length or applicability. I am admittedly not a Powershell guru, but I am interested to see how this plays out. Email any questions you have about this or any other topic to blog@advancedpersistentsecurity.net This blog aims to provide you with some analysis about Powershell going open source. This is from the perspective of a user that has no inside information from Microsoft. Disclaimer: I am in no way, shape, or form - past or present, compensated to endorse any software mentioned throughout this blog post.

Background and Implications

In a seemingly strange move, Microsoft has released its Powershell scripting language as an open source package and it is now available for Linux. View the press release for it here. This comes shortly after Bash was made available in Windows 10. This is not the first time that Microsoft open sourced some of their software, but Powershell is not the same as the .NET framework or the Javascript engine for Edge and Internet Explorer. In listening to several podcasts and speaking with industry professionals, I believe that Powershell has been growing in popularity. Powershell has been used for both automation and post-exploitation for security professionals alike, it is had been ignored for too long. Soon enough, we will see Powershell scripts connecting to remote hosts using SSH (Secure Shell).


To be completely transparent and honest, I have no inside knowledge of this. I surmise that there are a few reasons as to why Microsoft is becoming more open in terms of the source code of their products. Here is my analysis:

  1. With the growth of the public cloud environment, Microsoft has more cloud and legacy competitors. This is in terms of platforms and operating systems. Microsoft seems to be focusing more on growing Azure and less on locking people into the Windows operating system.
  2. Azure is cross platform. This is depicted by the Microsoft branded Tux the Penguin I got as swag at Great Wide Open 2016 Atlanta. This makes having a language that works universally beneficial to Microsoft Engineers and employees working with Azure.
  3. Python is a very popular and possibly more popular in terms of a cross-platform scripting and programming language. Perl is in some cases - namely the past, again - my opinion. Microsoft needs to compete. This attempts to begin to accomplish this.
  4. This can help to change the public image of Microsoft and their business model. I am not sure that it will make the proverbial hearts of Linux and Macintosh using Windows haters grow two sizes, but it is definitely a start.

Positive Outcomes

It never hurts to have a different scripting language. Especially if you are not the only one to be able to understand and contribute to it. Even more so if you are more comfortable with Powershell from working with it in a previous role, perhaps as a Windows Administrator. It could be more valuable to you than Python - given you did not use it heavily as a pen tester. This will also allow pen testers the ability to rarely have to touch a windows system when scripting using Powershell. Yes, I know they will still need to touch Windows systems to test new techniques, tools, and exploits, but no longer for the purpose of writing the scripts. Microsoft will only need to train their engineers and internal administrators for projects, like Azure, in (presumably) one language. It would not make sense to apply for a position as an engineer at Microsoft without some Powershell knowledge, but now it means more.

Negative Outcomes

I am having great difficulty in coming up with any legitimate negative outcomes at this time. Here is a list of my satire reasons:

  1. This could bring some nefarious Powershell scripts over to the Linux world. Since the file system in Linux differs vastly from Windows, this seems ineffective unless specifically written for Linux.
  2. Once the Windows Administrator community realizes that it will be on Linux and OS X systems, they will migrate. They will quickly become frustrated at the lack of C: and return to Windows, similarly to how I had Windows 10 for a day before reverting to Windows 7.
  3. We may see some interoperability in the Windows and Linux communities, maybe an olive branch of sorts. This is akin to the speculation of the metal bands Mushroomhead and Slipknot possibly touring with each other in the future.


In conclusion, this could be a great thing or an epic fail. This allows system administrators of all walks of life to collaborate and share code snippets. I am not sure this will do anything for the Windows versus *nix rivalry, but it may. At the end of the day, another scripting language on non-Windows platforms is not all that bad. How long until we get another Ruby, Joomla, or Jython? My two cents is to use what you are comfortable with and take into account any employer requirements or restrictions.

About the Author

When Joe is not contributing blog posts to AlienVault and all the exciting other things he does in his biography, he maintains AdvancedPersistentSecurity.net. He also has a podcast called "Advanced Persistent Security" that can be found on most major platforms such as iTunes, Google Play, and Stitcher as well as at the direct link. Guests of the podcast thus far include Georgia Weidman, Frank Rietta, Tracy Z. Maleef, Justin Seitz, Troy Hunt, and Jack Daniel.

Share this with others

Featured resources



2024 Futures Report

Get price Free trial