This is an intriguing peek into some upper echelon MS politics. He notes he got busted down from L69 to L68 - L68 is a significant cutoff inside MS, titled “Partner”. L70 is “Distinguished Engineer”. For recent years, L68 all-in comp is probably right around $1mm a year, although I’m sure that was a bit lower when PowerShell was being written, and much higher in toto if you held on to your RSUs.
What surprises me is everything not said here - I know a number of MS Partner-level folks, and they all strike me as perfectly capable of funding and hiding a reasonable-sized team to work on anything they think is important; in fact reducing and removing precisely this practice is one of the reforms Satya has made — getting upper echelon fiefdoms more aligned.
So, I think the full story is actually a lot more interesting than the tweets. I’d personally like a short memoir instead of the tweets. In any event, don’t feel too bad for him - he did fine, and PowerShell is one of the features that let Windows stay competitive with Linux as the world transitioned to the cloud.
> For recent years, L68 all-in comp is probably right around $1mm a year,
This is in stark contrast of how people below 67 got paid. Their packages have been visibly smaller than those of similar roles in FANNG-like companies. I think this is because resources will concentrate to the top as a company becomes bigger and older most likely because visibility disappears quickly among lower ranks and what they do individually hardly matters. If the theory is correct, the natural conclusion is that one should really seek a career in a fast-growing company unless they are great at navigating a big co's dynamics.
I'd like to know why Snower accepted abuse from corporate overlords for 5+ years (according to the thread). Being "in the dog house" for that long is ridiculous on the surface. That would never stand in today's world of tech. Is he just oldschool and had the mindset of "the company is always right"? Is he just a company man with intense loyalty? I would understand the company not adopting it and having to spend five years advocating for new tech in a company that large. But I can't understand why being demoted and punished for 5 years. I grew up with a major emphasis on work ethic but I can't wrap my mind around this.
Probably he was still getting paid a lot? It is MSFT after all.
I imagine that a certain kind of person, willing to write tooling and even get demoted for it, is willing to stick around with a bit of a pay cut anyways.
It's because he was interested in philosophy (particularly Leibniz). He also left a job he liked just to develop PowerShell at MS. (he wrote an entire manifesto about it)
Q: What was the justification for the demotion? What became of the leaders that made that decision?
A: It was stranger than you can possibly imagine
I think the gist of the story is that he was assigned to work on X but worked on Y instead. Notwithstanding how great Y idea turned out to be it seems he was demoted for insubordination?
IIRC powershell came about in the mid 2000s when it was the peak Steve Balmer and Windows Vista era for Microsoft. Absolutely none of the senior leaders at that time survived at the company in the long run, at least no one in the Windows organization. Jim Allchin, Steve Sinofsky, etc.
There are probably several thousand, if not more, other former Windows platform admins like me that are absurdly grateful that Snover stuck with his vision, giving us a path to being automation and, later, cloud experts. I've since branched off into DevOps, but up to about 2011/2012, was pigeon-holed as a Windows admin. Doing a few clever things with PowerShell and Active Directory led to my being chosen to work on my company's Skype for Business deployment, then Azure, which led to Kubernetes and DevOps.
Having an immediate work-related reason to learn a powerful scripting language means a lot in particular for people who don't have a lot of time to learn things outside of work, like parents (especially mothers) of young children.
Today's tech worker would have quit and launched a startup and have Powershell become the Enterprise "Ansible" add-on of Windows to then subsequently be acquired by Microsoft for [m|b]illions..
I've often wondered why powershell hasnt taken off on linux/mac. I'd guess MS would have a good case for investing there (given, eg., linux usage on azure).
Particularly in the recent history of "every day, another shell" on linux/mac. Powershell seems to solve the problem being resolved in rust,go,scala,... over-and-over. Why not just use that?
Look, I’ve written a lot of powershell, and I don’t mind it at all, but its not surprising at all to me.
Powershell isn’t in the same problem domain as rust/go/Scala/python.
The niche it fills is “calling windows apis from c++” or, more recently, c#.
It’s less effort than that, so it’s useful, on windows.
It is not less effort than using say, a bash script on other platforms because it:
- does not provide unique access to proprietary windows apis (they don’t exist)
- is not installed by default
- does not conform to any standards other than it’s own
- no package manager that works
The question you should ask is: why given that, would you, given that you must install something, choose to install and use powershell instead of python?
There’s no reason. You’d have to specifically like powershell to bother.
Most people don’t care enough to be bothered. Surprise level: 0.
As a mac user, I was going to provide a flippant answer, but I decided to look into it instead. Personally, I use zsh or a custom built shell scripting library inside swift. Always like to see improvements to shells though. Googled for it and got a dozen guides on how to install it in mac, but none that actually explained how to use it. (One video result looked like it might have some info, but to me that doesn't count as documentation). All the documentation on powershell is targeted at windows devs, and it's just a very different culture.
Flippant answer: the CapitalizationConvention-ShouldScare-EveryoneAway
Would want to look at how people use Power Shell on Windows and compare to how people use bash/tools/procfs/Python/C on *nix.
I think that, on *nix, Power Shell loses to cli tools/bash/procfs for trivial problems, to Python for simple problems, and to native strongly typed languages for complicated problems.
Many Windows APIs are COM based, for both arguments and results, so an OO-based scripting language is helpful.
Unix APIs tend to be less strongly typed. Mostly lists of lists of strings and ints.
Is there really a recent increase in shells on Linux? I can only think of zsh and fish.
I don't have any experience with iOS, and haven't scripted in anger in powershell.
Linux and its ecosystem evolved alongside bash. If somebody tried to make a thing, and said thing was difficult to script with bash, nobody used the thing. They would say it's "hard to use". So system facilities and applications that don't script well with a shell script like bash (or csh or zsh to tcsh...) never survived.
Basically, everything in linux automation is a nail, and bash is a very good hammer. DOS/Windows has had .bat scripts forever, which is not a particularly good hammer, but more importantly, Windows automation is very much not-nail like. You need a wrench and a socket set for many tasks, and CMD simply doesn't do that very well. (neither does bash for that matter) So powershell is a godsend. Meanwhile, us linux folks are sitting here with our hammer and all of our nails, and ... well, while I see that sometimes, it's maaaaybe nice to have a screwdriver as well, I certainly don't see the need for powershell.
> Particularly in the recent history of "every day, another shell" on linux/mac.
You'll note that all of these shells try to be a better hammer. None of them go in the direction that powershell goes in.
wokwokwok, cobbal and oefrha made excellent points in the sibling comments.
The only thing new PowerShell brings to the table is to pipe structured objects instead of only arbitrary data. And for that you don't need PowerShell itself: The power of the Linux shell isn't really the shell itself, it's in the powerful tools you can call from it and how you can interact with the Kernel and other components of the OS. The shell just gives you a simple interface and the ability to glue lots of small tools together.
I think the reason we don't have a popular PowerShell clone, a "shell-with-objects", is that we would need to change how a lot of these tools handle basic data IO. I would love to see that, because sometimes parsing text is annoying, mental overhead; especially when filenames containing whitespaces are involved; but then there are always scripting languages waiting to help out (e.g. I tend to use perl kind of "super powerful shell script").
Also, what's "every day, another shell"? I have been using bash nearly two decades now, with the odd script written for pure sh in case it might be shipped to a customer. After Manjaro duped my into using zsh (I think they changed the default) I am now growing fond of the improved completion and history; but I could still stick to bash without being on a deprecated track.
Powershell runs on Linux and macos too because of .NET Core/5+. The real reason is likely the same sort of people that are still typing Micro$oft in <current year> and keep spreading FUD that .NET isn't OS.
I have worked at Microsoft off and on for more than 20 years and it is insane how many disaster stories boil down to super horrible Windows management.
“.NET cross platform?” -> Windows screwed it up
“Phones” -> Windows screwed it up
“Azure Linux VM” -> Windows screwed it up (but thankful we fired them and fixed it)
One of best things Satya has done is essentially fire almost all of these morons.
"Remember the human". Do you start with the assumption that the product has to fit into Windows and do things the Windows way? Or do you start with the assumption that humans are going to use the product and make it in such a way that people can and want to use it.
Question for the more seasoned Mac/Linux folks on HN:
Powershell has been a gift in getting things accomplished in Windows. But one thing I've also come to enjoy using it for is quick and dirty interactions and scripting with REST APIs.
Things like Invoke-WebRequest, ConvertTo-Json/ConvertFrom-Json, Export-CSV, piping between almost everything, and the results being passed around like an object that I can use SQL-ish Select queries against, etc.
I find myself feeling like I'm missing something helpful when I'm on a Mac/Linux device. Is there a similar go to in the Mac/Linux world for this type of stuff? My current thinking is that I either have to start picking up Python or building a mental map of wget/awk/grep type commands that can be chained together for a similar effect, but I thought it best to try to learn from the wisdom of others first :-)
Is there a similar go to in the Mac/Linux worlds? Yeah, it's called Powershell 7! Powershell was ported to cross platform dotnet a few years back. Currently running some Powershell scripts in production on a Linux box.
This is the fundamental differentiation of Powershell, right? UNIX operates on text streams while Powershell operates on structured data. It is in a better position to do this kind of stuff.
That aside, a lot of contemporary cloudy CLIs will now speak json on stdin/out and JQ will make any json transformations you can imagine.
There are a few projects that take inspiration from PowerShell, but they haven't got mass adoption. I have hopes that Nushell will be a success when it gets to 1.0:
Question for the PowerShell afficionados: Do you consider PowerShell to be "something we can count on to exist on Windows systems, in the absence of Bourne-like shells" - or is it "a superior alternative to Bourne shells which only got traction on Windows because Bourne is too deeply embedded in the Unix world"?
the latter, though I may have some Stockholm syndrome. killer features:
* objects are streamed, not text. I look upon sed and awk and their ilk as stone knives and bear skins. why not just dot into fields?
* first-class interaction with libraries. I can import managed DLLs and call their methods. I don't have to build weird little one-off tools or expose porcelain. I can get at everything, it's profoundly hackable in an un-Windows way.
* the language is vectorized - basically like broadcast operators in something like NumPy. $x.foo gives you x's foo if x is an object, or an array of foos if x is an array of objects. it's really really nice.
* separate commands in one binary and argument (sets) are first-class. there's consistent rules about what "-i" will be short for. personally, I can pull all the valid commands and arguments automatically into my accessibility software for voice typing. the whole standard "verb-noun" thing also makes commands be what you expect and discoverable.
things I don't like include the language itself, its weird bindings to .NET (it predated the C# dynamic support and modern collection types), the restriction to .NET, bad support for streams (not sequences), the slowness, and the syntax looks a bit goofy. but it's worth the warts.
It's a superior alternative to cmd.exe. bash has never been a serious contender for Windows. Before PS you always wrote .bat scripts for cmd.exe (or .vbs for cscript.exe if you were really depraved). Nobody except Linux-first FOSS authors would expect Windows users to have cygwin / msys / mingw32 installed.
PS gave us a saner choice, though we would still usually bundle it with a .bat wrapper, just to a) make it double-clickable and b) set `-ExecutionPolicy Unrestricted`.
If you're asking "is PS better than bash", then sure it's better in some ways and worse in others, but that question only makes sense on Linux where bash is actually an option.
Bash as a shell is not so outstanding. It is the gnu tools and the other command line first Landscape. So bash on windows can never fly because these tools are not natively present (cygwin and friends are just awkward).
So Powershell (and the new terminal) gives us this whole package with its build-in, service and windows provided commandlets.
Consequently: bash will never beat PS on Windows except when someone provided a gnu tools and hundreds of other command line tools for windows.
PowerShell works on fundamentally different principles than do traditional Unix shells. Unix shells are for loosely coupling small "do one thing and do it well" programs. PowerShell can kinda do this, but its strengths lie in the "object streaming" features which aren't based on external processes at all but on loading .NET libraries with a special API, called cmdlets. In this respect PowerShell is a bit more like the VMS command processor, or using Python or Tcl as a shell. To add a command to a Unix shell, you need but drop an executable in your path. To add a command to PowerShell that takes advantage of PowerShell's features, you need to write a cmdlet in a language like C# and then install the cmdlet. This is also why PowerShell takes so long to boot up: it's probing for and loading installed cmdlets.
For these reasons I do not consider PowerShell to be directly comparable to Unix shells, but it is an essential part of the Windows toolkit because no one wants to use the MS-DOS-like cmd.exe for anything serious.
Honestly I enjoy writing powershell more than bash scripts. Bash syntax is arcane and sometimes inconsistent where as powershell 7+ is fairly comfortable syntax.
However, powershell does often feel cludgy and I often have have to figure out how to do more complex things. Not a perfect solution but it integrates with Windows nicely.
> "Do you consider PowerShell to be "something we can count on to exist on Windows systems"
Once, yes; then they renamed it "Windows PowerShell" and deprecated it so it's no longer being developed. Instead they started trying to appeal to Linux users with new cross-platform "PowerShell" which you have to install separately. Windows PowerShell is increasingly falling behind that in performance and compatibility. We're heading away from "PowerShell included" back to the old world of "if you have to download and install something to get away from this abandonware legacy thing, why not Python or node.js?".
> "a superior alternative to Bourne shells which only got traction on Windows because Bourne is too deeply embedded in the Unix world"?"
It's a superior alternative to Bourne shells on Windows, and because it's basically Microsoft-Perl or Microsoft-Clunky-Python as well as being a shell, as in - it's more capable than Unix shell because it's a kitchen sink of scripting and programming language as well as command line.
(Not an aficionado) I feel like it is superior in many ways, but the syntax and case sensitivity have always been a barrier for me. It’s still worth it though when it’s the right tool. I don’t do Windows stuff often though so it’s always jarring coming back to it from bash.
I never had "Oh I would really liked to have *sh on this Win machine". Some GNU tools, like grep (just because findstr has it's own arcaneties) or sed - but neither of them is the part the shell itself.
Sure, before 2012 if you wanted a little more flow control than provided by cmd you had not really many options (and if you needed portability you would need to use VB/Jscript, not a 3rd party tool), but since then you have PS3 at worst (on 2012/R2), or at least PS5.1 everywhere else, including client SKUs.
And writing even not a complex script with a bunch of if..else is way, way easier in PS, be it for a Win or a *nix machine.
The latter. I say that as someone who only works with nix systems for the last 5 years. I still write some powershell for stuff at home. I prefer Hyper-V as a hypervisor and use it there.
But the current state makes sense. Everything in Windows is COM, .NET, or a derivative thereof. Having a scripting language that natively speaks to these technologies in a flexible manner is a natural extension.
nix is a lot more of the file based stuff and so a shell language that makes it easy to run a series of tools that operate on text is natural (I.e. awk, sed, grep, xargs)
Its far superior, like light years superior. PowerShell will exist, entire MS ecosystem is now based on it. That fear has passed years ago, especially when it got cross-platform. I expect actually to see more pwsh on linux and even OTB pwsh linux distribution (heck, I will make it myself if needed when I get retired).
If I had to guess why, maybe because PowerShell is a little “busy”. It always feels unclear whether he was trying to make something similar to Unix Shell or a shell for the .NET environment. It’s greyed somewhere in between in a confusing and inconvenient way. Something as simple as a diff requires using objects, it just doesn’t feel like it was designed with SysAds in mind.
My guess was it had to do with marketing, sort of like how JS started off as a Scheme dialect, but higher ups enforced Java Syntax. .NET was pretty new at the time.
As a sysadmin, you can pull pwsh from my cold dead hands. Evrything being an object is a feature, not a bug. Going back to bash feels like going back a half century.
Interesting story. I have a love/hate relationship with Powershell. I was proficient in the CMD batch language, but decided to develop a set of SQL scripts in Powershell. With the object integration, it's a good enviornment for Windows; if I need to do anything in Windows, for example color-coded error output, PS does that for me.
The object-oriented .NET design did not work for me in preprocessing text files for those SQL queries. PS takes 15 minutes to do what Strawberry Perl (the Windows port of Perl) does in 3 seconds with a one-liner regex. Perl is a better choice for that kind of thing, I know, but the orders of magntiude difference in processing files line-by-line was surprising.
I've been contemplating migrating scripts to Python so that we would be environment agnostic, but it's not a priority. (Turns out a LInux cloud instance costs more than a Windows instance. Our company signed a huge deal with Microsoft and everything is being pushed in that direction now.)
In the cosmic sense, the demotion was lenient, considering that he breathed new life into something which is mostly an abomination, & should have been put out of our collective misery long ago. The cybersecurity industry would be a shadow of its current self if it weren't for good old Windows.
The ACM needs an "H.P. Lovecraft Award" for such situations.
vessenes|3 years ago
What surprises me is everything not said here - I know a number of MS Partner-level folks, and they all strike me as perfectly capable of funding and hiding a reasonable-sized team to work on anything they think is important; in fact reducing and removing precisely this practice is one of the reforms Satya has made — getting upper echelon fiefdoms more aligned.
So, I think the full story is actually a lot more interesting than the tweets. I’d personally like a short memoir instead of the tweets. In any event, don’t feel too bad for him - he did fine, and PowerShell is one of the features that let Windows stay competitive with Linux as the world transitioned to the cloud.
hintymad|3 years ago
This is in stark contrast of how people below 67 got paid. Their packages have been visibly smaller than those of similar roles in FANNG-like companies. I think this is because resources will concentrate to the top as a company becomes bigger and older most likely because visibility disappears quickly among lower ranks and what they do individually hardly matters. If the theory is correct, the natural conclusion is that one should really seek a career in a fast-growing company unless they are great at navigating a big co's dynamics.
belter|3 years ago
"Digital Transformation: Thriving Through the Transition - Jeffrey Snover, Microsoft"
https://youtu.be/nKyF8fzed0w
andrew_|3 years ago
rtpg|3 years ago
I imagine that a certain kind of person, willing to write tooling and even get demoted for it, is willing to stick around with a bit of a pay cut anyways.
birdyrooster|3 years ago
throwaway787544|3 years ago
pyb|3 years ago
andrew_|3 years ago
[deleted]
birdyrooster|3 years ago
omega3|3 years ago
Q: What was the justification for the demotion? What became of the leaders that made that decision?
A: It was stranger than you can possibly imagine
I think the gist of the story is that he was assigned to work on X but worked on Y instead. Notwithstanding how great Y idea turned out to be it seems he was demoted for insubordination?
tjoff|3 years ago
Not gonna happen.
qbasic_forever|3 years ago
jodrellblank|3 years ago
@Dejify: Not sure if you can speak to this, but it'd be nice to know what happened to those who dinged you? - https://twitter.com/Dejify/status/1523025584749629440
@Jsnover reply: "Retired" with a picture of Donald Trump on the Apprentice captioned "Fired" - https://twitter.com/jsnover/status/1523031601390571520
EnKopVand|3 years ago
Probably, and what management blunder that would have been if Jeffrey had left Microsoft because of it.
MandieD|3 years ago
Having an immediate work-related reason to learn a powerful scripting language means a lot in particular for people who don't have a lot of time to learn things outside of work, like parents (especially mothers) of young children.
pas|3 years ago
(I'm asking because I thought k8s is already devops, just as azure is if devs have some access.)
joshbaptiste|3 years ago
ZhangSWEFAANG|3 years ago
mjburgess|3 years ago
Particularly in the recent history of "every day, another shell" on linux/mac. Powershell seems to solve the problem being resolved in rust,go,scala,... over-and-over. Why not just use that?
wokwokwok|3 years ago
Powershell isn’t in the same problem domain as rust/go/Scala/python.
The niche it fills is “calling windows apis from c++” or, more recently, c#.
It’s less effort than that, so it’s useful, on windows.
It is not less effort than using say, a bash script on other platforms because it:
- does not provide unique access to proprietary windows apis (they don’t exist)
- is not installed by default
- does not conform to any standards other than it’s own
- no package manager that works
The question you should ask is: why given that, would you, given that you must install something, choose to install and use powershell instead of python?
There’s no reason. You’d have to specifically like powershell to bother.
Most people don’t care enough to be bothered. Surprise level: 0.
cobbal|3 years ago
Flippant answer: the CapitalizationConvention-ShouldScare-EveryoneAway
randomifcpfan|3 years ago
I think that, on *nix, Power Shell loses to cli tools/bash/procfs for trivial problems, to Python for simple problems, and to native strongly typed languages for complicated problems.
Many Windows APIs are COM based, for both arguments and results, so an OO-based scripting language is helpful.
Unix APIs tend to be less strongly typed. Mostly lists of lists of strings and ints.
Is there really a recent increase in shells on Linux? I can only think of zsh and fish.
nwallin|3 years ago
Linux and its ecosystem evolved alongside bash. If somebody tried to make a thing, and said thing was difficult to script with bash, nobody used the thing. They would say it's "hard to use". So system facilities and applications that don't script well with a shell script like bash (or csh or zsh to tcsh...) never survived.
Basically, everything in linux automation is a nail, and bash is a very good hammer. DOS/Windows has had .bat scripts forever, which is not a particularly good hammer, but more importantly, Windows automation is very much not-nail like. You need a wrench and a socket set for many tasks, and CMD simply doesn't do that very well. (neither does bash for that matter) So powershell is a godsend. Meanwhile, us linux folks are sitting here with our hammer and all of our nails, and ... well, while I see that sometimes, it's maaaaybe nice to have a screwdriver as well, I certainly don't see the need for powershell.
> Particularly in the recent history of "every day, another shell" on linux/mac.
You'll note that all of these shells try to be a better hammer. None of them go in the direction that powershell goes in.
archi42|3 years ago
The only thing new PowerShell brings to the table is to pipe structured objects instead of only arbitrary data. And for that you don't need PowerShell itself: The power of the Linux shell isn't really the shell itself, it's in the powerful tools you can call from it and how you can interact with the Kernel and other components of the OS. The shell just gives you a simple interface and the ability to glue lots of small tools together. I think the reason we don't have a popular PowerShell clone, a "shell-with-objects", is that we would need to change how a lot of these tools handle basic data IO. I would love to see that, because sometimes parsing text is annoying, mental overhead; especially when filenames containing whitespaces are involved; but then there are always scripting languages waiting to help out (e.g. I tend to use perl kind of "super powerful shell script").
Also, what's "every day, another shell"? I have been using bash nearly two decades now, with the odd script written for pure sh in case it might be shipped to a customer. After Manjaro duped my into using zsh (I think they changed the default) I am now growing fond of the improved completion and history; but I could still stick to bash without being on a deprecated track.
WaxedChewbacca|3 years ago
[deleted]
lloydatkinson|3 years ago
nobodyandproud|3 years ago
Ability to work with both .NET and COM objects? Piping objects and not strings?
Absolutely amazing and useful tech, and I had to reread to make sure I wasn’t reading about some future plan.
I wonder which division pushed hard to demote; the Windows division?
outside1234|3 years ago
“.NET cross platform?” -> Windows screwed it up
“Phones” -> Windows screwed it up
“Azure Linux VM” -> Windows screwed it up (but thankful we fired them and fixed it)
One of best things Satya has done is essentially fire almost all of these morons.
csours|3 years ago
agent86|3 years ago
Powershell has been a gift in getting things accomplished in Windows. But one thing I've also come to enjoy using it for is quick and dirty interactions and scripting with REST APIs.
Things like Invoke-WebRequest, ConvertTo-Json/ConvertFrom-Json, Export-CSV, piping between almost everything, and the results being passed around like an object that I can use SQL-ish Select queries against, etc.
I find myself feeling like I'm missing something helpful when I'm on a Mac/Linux device. Is there a similar go to in the Mac/Linux world for this type of stuff? My current thinking is that I either have to start picking up Python or building a mental map of wget/awk/grep type commands that can be chained together for a similar effect, but I thought it best to try to learn from the wisdom of others first :-)
rektide|3 years ago
More from the fringe, I'm quite enjoying zx, a really nodejs powered scripting environment. https://github.com/google/zx
Covered somewhat in ZX 3.0 https://news.ycombinator.com/item?id=28195580 (189 points, 8 months ago, 163 points)
magospietato|3 years ago
closeparen|3 years ago
That aside, a lot of contemporary cloudy CLIs will now speak json on stdin/out and JQ will make any json transformations you can imagine.
sjellis|3 years ago
https://www.nushell.sh/
pouting|3 years ago
digisign|3 years ago
jhugo|3 years ago
paramost|3 years ago
einpoklum|3 years ago
sterlind|3 years ago
* objects are streamed, not text. I look upon sed and awk and their ilk as stone knives and bear skins. why not just dot into fields?
* first-class interaction with libraries. I can import managed DLLs and call their methods. I don't have to build weird little one-off tools or expose porcelain. I can get at everything, it's profoundly hackable in an un-Windows way.
* the language is vectorized - basically like broadcast operators in something like NumPy. $x.foo gives you x's foo if x is an object, or an array of foos if x is an array of objects. it's really really nice.
* separate commands in one binary and argument (sets) are first-class. there's consistent rules about what "-i" will be short for. personally, I can pull all the valid commands and arguments automatically into my accessibility software for voice typing. the whole standard "verb-noun" thing also makes commands be what you expect and discoverable.
things I don't like include the language itself, its weird bindings to .NET (it predated the C# dynamic support and modern collection types), the restriction to .NET, bad support for streams (not sequences), the slowness, and the syntax looks a bit goofy. but it's worth the warts.
Arnavion|3 years ago
It's a superior alternative to cmd.exe. bash has never been a serious contender for Windows. Before PS you always wrote .bat scripts for cmd.exe (or .vbs for cscript.exe if you were really depraved). Nobody except Linux-first FOSS authors would expect Windows users to have cygwin / msys / mingw32 installed.
PS gave us a saner choice, though we would still usually bundle it with a .bat wrapper, just to a) make it double-clickable and b) set `-ExecutionPolicy Unrestricted`.
If you're asking "is PS better than bash", then sure it's better in some ways and worse in others, but that question only makes sense on Linux where bash is actually an option.
oaiey|3 years ago
So Powershell (and the new terminal) gives us this whole package with its build-in, service and windows provided commandlets.
Consequently: bash will never beat PS on Windows except when someone provided a gnu tools and hundreds of other command line tools for windows.
bitwize|3 years ago
For these reasons I do not consider PowerShell to be directly comparable to Unix shells, but it is an essential part of the Windows toolkit because no one wants to use the MS-DOS-like cmd.exe for anything serious.
lazypenguin|3 years ago
However, powershell does often feel cludgy and I often have have to figure out how to do more complex things. Not a perfect solution but it integrates with Windows nicely.
jodrellblank|3 years ago
Once, yes; then they renamed it "Windows PowerShell" and deprecated it so it's no longer being developed. Instead they started trying to appeal to Linux users with new cross-platform "PowerShell" which you have to install separately. Windows PowerShell is increasingly falling behind that in performance and compatibility. We're heading away from "PowerShell included" back to the old world of "if you have to download and install something to get away from this abandonware legacy thing, why not Python or node.js?".
> "a superior alternative to Bourne shells which only got traction on Windows because Bourne is too deeply embedded in the Unix world"?"
It's a superior alternative to Bourne shells on Windows, and because it's basically Microsoft-Perl or Microsoft-Clunky-Python as well as being a shell, as in - it's more capable than Unix shell because it's a kitchen sink of scripting and programming language as well as command line.
jrsj|3 years ago
justsomehnguy|3 years ago
I never had "Oh I would really liked to have *sh on this Win machine". Some GNU tools, like grep (just because findstr has it's own arcaneties) or sed - but neither of them is the part the shell itself.
Sure, before 2012 if you wanted a little more flow control than provided by cmd you had not really many options (and if you needed portability you would need to use VB/Jscript, not a 3rd party tool), but since then you have PS3 at worst (on 2012/R2), or at least PS5.1 everywhere else, including client SKUs.
And writing even not a complex script with a bunch of if..else is way, way easier in PS, be it for a Win or a *nix machine.
AndrewDucker|3 years ago
Being able to use all of the .Net classes trivially is also staggeringly useful.
rufius|3 years ago
But the current state makes sense. Everything in Windows is COM, .NET, or a derivative thereof. Having a scripting language that natively speaks to these technologies in a flexible manner is a natural extension.
nix is a lot more of the file based stuff and so a shell language that makes it easy to run a series of tools that operate on text is natural (I.e. awk, sed, grep, xargs)
drblast|3 years ago
Have you ever wanted to write a command line executable and gotten hung up on I/o and parameter parsing?
With PowerShell you can write a cmdlet in C# as a PowerShell module and have strongly typed input and output parameters for free. It's a revelation.
As as scripting language, it's fine but for me the killer feature is being able to easily extend it in a non-scripting language.
majkinetor|3 years ago
dredmorbius|3 years ago
recursive|3 years ago
pipeline_peak|3 years ago
My guess was it had to do with marketing, sort of like how JS started off as a Scheme dialect, but higher ups enforced Java Syntax. .NET was pretty new at the time.
luma|3 years ago
wistlo|3 years ago
The object-oriented .NET design did not work for me in preprocessing text files for those SQL queries. PS takes 15 minutes to do what Strawberry Perl (the Windows port of Perl) does in 3 seconds with a one-liner regex. Perl is a better choice for that kind of thing, I know, but the orders of magntiude difference in processing files line-by-line was surprising.
I've been contemplating migrating scripts to Python so that we would be environment agnostic, but it's not a priority. (Turns out a LInux cloud instance costs more than a Windows instance. Our company signed a huge deal with Microsoft and everything is being pushed in that direction now.)
georgia_peach|3 years ago
The ACM needs an "H.P. Lovecraft Award" for such situations.
Jeffrey Snower: RE-ANIMATOR
GartzenDeHaes|3 years ago
unknown|3 years ago
[deleted]
Jemm|3 years ago
unknown|3 years ago
[deleted]
throwawaymanbot|3 years ago
[deleted]
janandonly|3 years ago
[deleted]