PowerShell is such a big subject that it is really hard to know where to start.
I’m going to attempt to cover the high level things that I think are important to understand about it.
- It is the future for all things Microsoft
- It is a Shell
- It is a Language
- It is a platform
It is the future of all things Microsoft
The inventor of PowerShell is Jeffrey Snover. He is a Microsoft Fellow and visionary when it comes to DevOpps and automation.
I was heavily involved in Microsoft’s first attempts at a new Shell and automation langage since the command shell. This was Windows Script Host (WSH). I even co-authored the first book on the subject http://www.amazon.com/Sams-Teach-Yourself-Windows-Script/dp/067231374X, so I have been on-board with IT automation for nearly 20 years.
It is a Shell
Since Windows 7, PowerShell has been an integral component shipping with desktop and server versions of Windows. It provides 2 shells; a command shell, and an Integrated Script Environment (ISE). There are also 32 bit and 64 bit versions of each.
There are also several awesome editors/Shell extensions for PowerShell such as:
- Sapien’s PowerShell Studio https://www.sapien.com/software/powershell_studio
- Dell’s PowerGUI http://software.dell.com/products/powergui-freeware/
- PowerShell Extension for Visual Studio https://visualstudiogallery.msdn.microsoft.com/c9eb3ba8-0c59-4944-9a62-6eee37294597
- Visual Studio Code https://code.visualstudio.com/Download and PowerShell Language add-on
In widows 10 there is even the option to substitute the default CMD shell for PowerShell.
It is a Language
As a shell, PowerShell goes above and beyond traditional shells (as found on Unix systems) by supporting objects in its pipeline. The output of one function can be an object which is passed to the next, rather than just text output being used as the input to the next command.
In the shell you can use command lets (cmdlet’s) which follow a verb-nown naming convention, such as get-process which would return information on all currently running processes or objects. Even a variable is really an object provided by the .Net framework.
All aspects of Windows management are provided including modules for all server components and product from Microsoft. Even vendors such as VMWare provide PowerShell modules to administer their systems from Windows.
Because PowerShell was created using Microsoft.Net, it can also leverage most other .Net languages and features of the .Net framework which is a very extensive and modern platform supporting the latest web technologies such as XML and JSON.
Existing .Net and COM based applications can also be automated from PowerShell which is what makes it possible to automate products such as Blackmagics ATEM video switches and CasparCG playout automation server.
New functionality can be exposed through PowerShell by writing appropriate .Net class libraries such as my X-keys and ATEM libraries.
It’s a platform
Combining all of the features mentioned above, you can hopefully understand why PowerShell is a great platform and why I have decided to build an automation solution for broadcast automation on top of it.
Yes, it is a Microsoft platform, you will never see me developing anything for OS-X although that doesn’t stop you from using MAC/Intel hardware to run Windows. Microsoft has just released an open-source version of .Net and PowerShell which now runs on OSx and Linux.