Earlier this year, PowerShell Core[1] became generally available[2] under an Open Source (MIT[3]) license. PowerShell is hardly a new technology. From its first releaseĀ for Windows in 2006, PowerShell's creators sought[4] to incorporate the power and flexibility of Unix shells while remedying their perceived deficiencies, particularly the need for text manipulation to derive value from combining commands.
Five major releases later, PowerShell Core allows the same innovative shell and command environment to run natively on all major operating systems, including OS X and Linux. Some (read: almost everyone) may still scoff at the audacity and/or the temerity of this Windows-born interloper to offer itself to platforms that have had strong shell environments since time immemorial (at least as defined by a millennial). In this post, I hope to make the case that PowerShell can provide advantages to even seasoned users.
Consistency across platforms
If you plan to port your scripts from one execution environment to another, you need to make sure you use only the commands and syntaxes that work. For example, on GNU systems, you would obtain yesterday's date as follows:
date --date="1 day ago"
On BSD systems (such as OS X), the above syntax wouldn't work, as the BSD date utility requires the following syntax:
date -v -1d
Because PowerShell is licensed under a permissive license and built for all platforms, you can ship it with your application. Thus, when your scripts run in the target environment, they'll be running on the same shell using the same command implementations as the environment in which you tested your scripts.
Objects and structured data
*nix commands and utilities rely on