> Powershell Core is not, however, a good experience on a Linux machine
Or on a Mac.
There is the Azure CLI, but it is pretty limited on what it can do. Both GCP and AWS have good command line tools (AWS can be awkward sometimes). GCP will even give you a CLI right there on the web console so you can run CLI commands even if you don't have them locally installed in whatever system you are coming from.
Assuming the provider won't break in mysterious ways, or that Azure won't return a 400 error for no discernible reason, you are better off doing whatever you can do from Terraform. And then you have a repeatable environment and won't have to remember Azure quirks every single day.
API responses are inconsistent, it has the slowest VM spin up time of the big three(also inconsistent). It has lots of confusing names for instances (and a shit ton of them), weird limitations on SKUs.
Anecdote: I almost threw my keyboard away once I figured out why the instances I had deployed suddenty lost network connectivity. I had added a load balancer pointing to them. Really. That's all it was. Once I did so, all traffic started flowing through the load balancer. What kind of design is that? And AFAIK you can only add one. That may differ between Basic or Standard load balancer SKUs, I don't remember, don't care.
On either GCP or AWS, one can attach as many load balancers they want, nothing else is affected, only traffic flowing through them.
That's just one example. Next time you try attaching some premium disk SKU to some non premium VM SKU (or is it vice-versa?) and a Premium/Standard Storage Account and the Azure API yells at you, you'll understand. The storage account has SKUs too. Premium cannot have blob storage. Or is it the standard that can't? Meh, I don't care. You have to keep track of all of this. Which may or may not be clear in the documentation.
Simple things like health checks terminating scale set instances automatically are not there. Heck, until some point in time you couldn't even terminate specific instances in a scale set. They have improved that.
You have to do a bunch of work to "generalize" instances for use in Azure. In true Azure fashion, the disk has to be a VHD (not VHDX). Image can only be up to 1023GB in size. Sizes must be aligned to 1MB. And probably more stuff.
At the end of the day, things will eventually work. Just budget between 3x to 5x extra development time versus AWS or GCP.