Earlier this year, I needed to learn PowerShell scripting for one Windows-related project, and I have tried it out a few more times on Mac. It has quickly become one of my favorite tools for automation and scripting—taking on jobs that I would have otherwise tried to do with Node.js, Shortcuts, macOS Automator, or heaven forbid, Bash scripts.
I get it now. PowerShell is great, even if you don’t use it as your shell, and even if you’re on Mac or Linux.
↫ Corbin Davenport
I don’t use the shell often enough on any of my main machines to have much of an idea about the strenghths and weaknesses of PowerShell compared to more traditional shells, but this is definitely not the first time I’ve heard a lot of praise for it from people otherwise knee-deep in the UNIX and traditional shell world.
There really must be something to this, and since PowerShell is also available on Linux and macOS, it’s pretty straightforward to give it a go without having to deal with Windows.

PowerShell kinda sucks as a shell, fish is much better, but it’s pretty good at programming tasks. It has a bit of learning curve and requires a lot of looking up how to do things, but it’s definitely powerful and nice to use on Linux too.
I agree, PowerShell is not a great environment, but it really impressive for scripting. One of my last projects before I retired was rewriting several C programs to PowerShell because a vendor had dropped C API support for accessing their database. It took some time to get used to the PowerShell way of doing things, but in the end they were very clean. The biggest drawback was speed; since PowerShell is interpreted, some of the scripts that retrieved large collections of data were slower, but not unreasonable.
From what I’ve seen of the syntax, it looks a little too Win32API+VisualBasic-y for me.
…and syntax is one reason I wasn’t too keen on learning Ruby+Rails when I already knew Python.
These days, if I’m not using Rust for the amount of compile-time confidence and easy deployment it gives me, it’s probably either because there’s still some Python library that hasn’t gotten a suitable Rust replacement yet (eg. PyQt, Django’s ecosystem) or because it’s so quick and dirty that I couldn’t talk myself into an on-disk representation beyond “one file with embedded configuration that I edit as I go”… in which case I also use Python since rust-script is still a bit rough.