Effortlessly automate complex tasks with the help of Microsoft’s PowerShell, a powerful system admin tool comprised of a command-line shell, a scripting language, and a powerful config management framework
What’s new in PowerShell 7.2.0 Preview 9:
- BREAKING CHANGES:
- Change the default value of $PSStyle.OutputRendering to OutputRendering.Host and remove OutputRendering.Automatic (#15882)
- Fix CA1052 for public API to make classes static when they only have static methods (#15775) (Thanks @xtqqczze!)
- Update pwsh.exe -File to only accept .ps1 script files on Windows (#15859)
Despite its name, PowerShell is much more than just a command shell. According to Microsoft, PowerShell is “a cross-platform task automation solution made up of a command-line shell, a scripting language, and a configuration management framework.”
With the introduction of the PowerShell Core in August 2006, PowerShell was also made open-source and available for both macOS and Linux.
The holy trinity of PowerShell
As mentioned above, PowerShell’s three main components are the shell, the scripting language, and the configuration management framework. Unlike other command-line interfaces, PowerShell’s shell is not limited to only accepting and returning text. In fact, PowerShell is capable of accepting and returning .NET objects.
The shell includes some of the best features of the industry, as well as a powerful command-line history, tab completion, command prediction, support for command and parameter aliases, an in-console help system, and a pipeline for chaining commands.
The scripting language is definitely one of PowerShell’s main advantages. It can be used to build, test, and deploy various solutions (apps and even CI/CD environments). Similar to the shell, the scripting language (built on top of the Common Language Runtime) too can input and output .NET objects.
The scripting language is also remarkably extensible through functions, classes, scripts, and other modules. It also features built-in support for command data formats such as CSV, JSON, and XML.
PowerShell’s DSC (Desired State Configuration) that’s built to allow system administrators to manage as much of the available infrastructure as possible.
With its help, system admins can deploy configurations using push and pull models, enforce configuration settings and create configuration drift reports, as well as create declarative configurations and custom scripts.
The beauty of PowerShell is that it can prove itself useful for all types of users, on all major OSes. For example, even typical users who are not afraid to tinker with the system a bit can use PowerShell to automate a plethora of tasks (use it to free up space on your hard drive, organize files, create run and click actions on a schedule, and so forth).
However, it’s only in massive enterprise-related environments that PowerShell can “spread its wings.” For an advanced system administrator, PowerShell can mean the difference between manually having to do various time-consuming tasks and typing in a few commands to automate said tasks and get the job done in a few seconds rather than minutes.