Jeffrey Snover Claims Microsoft Demoted Him For Inventing PowerShell (theregister.com) 110
PowerShell inventor Jeffrey Snover has aired some grievances about how his indispensable tool once got him demoted. The Register reports: The Microsoft Technical Fellow discussed the incident in a weekend Twitter thread that started when controversial investor Peter Thiel discussed the virtues of courage. "Courage is a key characteristic of future leaders and previous employees," Snover joked in response to Thiel's musings. He also asserted that "many people focus on getting their boss to pat them on the head rather than address problems." Snover said he was urged by friend Kevin Kean -- who served as director of the Microsoft Security Response Center (MSRC) in the mid 2000s -- not to reveal PowerShell, as it may not well be received.
This is not the first time Snover has revealed his demotion, but he hasn't previously discussed his profound embarrassment -- or that he kept it secret from everyone other than his wife. "I never mentioned it to anyone for over a decade until I got promoted to Distinguished Engineer," tweeted Snover, who was given the honor in March 2009. Snover then contrasted Microsoft's policy for company-related passion projects to Google's famous 20 percent rule.
This is not the first time Snover has revealed his demotion, but he hasn't previously discussed his profound embarrassment -- or that he kept it secret from everyone other than his wife. "I never mentioned it to anyone for over a decade until I got promoted to Distinguished Engineer," tweeted Snover, who was given the honor in March 2009. Snover then contrasted Microsoft's policy for company-related passion projects to Google's famous 20 percent rule.
Where's the story? (Score:5, Insightful)
Re: (Score:2)
At least the The Register is consistent in being useless
Re: (Score:2)
The "BOFH" chapter from The Register is great though.
Re: Where's the story? (Score:2)
It so was. :)
Re: (Score:3)
A long time ago I used to bother pointing out the frequent gross factual errors in The Register's stories.
They never corrected anything.
I stopped going there.
Re: (Score:2)
Re: (Score:2)
" They are not there for accuracy or as suggestion of what someone should do. They are there for entertainment and for that purpose they are well written."
You are talking more nonsense than The Register.
From The Register:
"The Register: Enterprise Technology News and Analysis
Enterprise technology news for IT decision-makers and professionals."
Although you are right that they didn't miss me. That's the problem. People keep visiting News sites that spread lies and nonsense.
Re: (Score:2)
Re: (Score:2)
Gates didn't invent ctrl alt delete. David Bradley at IBM did.
Re: (Score:2)
True, Gates didn't invent ctrl-alt-delete, but he DID make it famous.
Re: (Score:2)
Re: (Score:2)
I think she "invented" Bob, not Clippy.
Re:Where's the story? (Score:4, Informative)
Here is an actually-somewhat-interesting interview with Snover about developing Powershell:
https://evrone.com/jeffrey-sno... [evrone.com]
He doesn't mention anything about being demoted but at least it is an article you read and make sense of. I'm still not sure which tweets we are even supposed to be looking at (and I did look for a while - what a garbage dump twitter is).
Re: (Score:2)
Re:Where's the story? (Score:5, Interesting)
Well the tale is from Jeffey Snover's twitter feed, so from the horses mouth....
He says that he developed Powershell, but his VP at the time was a bit of an ass, and MS refused to have anything to do with anything "linuxy". He was therefore told to drop it. When he didn't he got demoted (which according to him had quite a large financial penalty)
Much later in his career the benefits of a shell based tool was seen he was promoted again.
Now obviously we only have his word for this, although ex-colleagues on the same twitter feed, seem to back him up that in MS, and especially in that division, there was a toxic management culture , where any innovation would be stomped on and the perpetrators deminished
Re: (Score:1)
By his own narrative, it wasn't creating PowerShell specifically that got him demoted. It was doing "unassigned" work during work hours.
He details that it was specifically that Microsoft did/does not have the 80/20 type thing some competitors have, where you get some time to free range random concepts and ideas, so some pissy middle manager got mad that he wasn't going through the whole project approval (you know, the let everyone comment on the color of the shed stage) and he got demerits.
Is it indispensable? (Score:3)
I've only dabbled with Powershell, but it seemed a pain. Maybe because I don't work in Visual Basic? Anyway, I stuck with terminal until the Linux subsystem came along.
Now _that_ I find indispensable.
Re:Is it indispensable? (Score:4, Interesting)
Re: (Score:2)
It's not really telling much - that can as well be done through other means as well.
The only benefit of a shell instead of a graphical UI is that you can run headless.
Re: (Score:2)
The only benefit of a shell instead of a graphical UI is that you can run headless.
And that with a shell you can access all the underlying commands in contrast to a graphical UI that presents a subset of functionality. And that with a shell you can create scripts that allow programmability and scheduled or conditional execution. The main benefit of the GUI is that it can be more convenient, if you happen to want to do what the GUI allows you to do.
Re:Is it indispensable? (Score:5, Insightful)
The only benefit of a shell instead of a graphical UI is that you can run headless.
And that you can script things easily. And save command snippets in a text file. And easily describe how to do something in an email. And do things over remote connection, whether the machine is headless or not, and whether what is done is automatic or manual. And that you can easily log what you do, both to be able to review that you did the right thing, and to be able to replicate it in the future if required.
A GUI is great if all you want to do is check a checkbox. But if that is your job, be prepared to be replaced with a really small shell script before long.
Re: (Score:2)
And aqueducts....
Re: (Score:2)
You're exactly right that Powershell is becoming ever more indispensable, but only as long as your world is constrained to just Microsoft. It's clear that with every new version of Windows, Microsoft is hell-bent on making performing simple tasks ever harder and more awkward by either removing or at least more deeply burying the most often used or actually useful functionality under an increasingly non-intuitive layers of crap GUI design.
It's therefore natural that more and more people are having to resort
Re: (Score:3)
Windows isn't designed to get work done any more.
Windows is designed to play games, and surf the net. All the other shit it does is job creation at M$
Not just job creation *at Microsoft*, but job creation all across the board. There's the legions of "licensing specialists" who sell you a piece of digital paper with some license codes on it so you can "activate" the product you just purchased from Microsoft. There's the "partners" who exist to tell you how you've fucked up your licensing analysis and that you actually need to pay more combined with "I just designed this awesome custom tool for you, unfortunately it will rot on the vine while you pay for
Re: (Score:1)
1000x this
Re: (Score:2)
There are a few but important features in MS Azure that you can only do/activate in powershell.
Being forced to use it doesn't make powershell good. Having things you can only do in powershell makes Azure bad. (Windows was already bad.)
Re: (Score:1)
Re: (Score:3)
For me powershell has never really been much of a use. Only some rare stuff that probably could be done other ways too.
It's one of the features not wanted, not needed and a mystery how it even ended up in the final product.
Re: (Score:1)
Re: Is it indispensable? (Score:2)
My thoughts exactly.
But is this really a fault of powershell? Powershell is a different tool than bash. They do some things similarly and that's okay, but their best features weren't developed to compete with each other.
I'm no expert, but my understanding is powershell actually has some advantages (or did at one point) over bash for some very specific things. On Slashdot I recall users talking about things like type fidelity for example. I don't work with either tool to much personally, so I can't defe
Re:Is it indispensable? (Score:4, Informative)
Here is a script just from the top of my head (so it may not be the best way of doing it). I could have easily got it down to a single line if I didn't want to worry about efficiency. Also, if this were a real script I would use named arguments.
And now for a follow up challenge. Take the output of the bash and PowerShell scripts and sort the list by the write time of the most recently written reference file. In your case, Dir_2/file_four may sort before Dir_1/file_one if the files that contain its name were the earliest.
This is where PowerShell comes into its own as the output of the script are all objects rather than just text. That means I can just do this challenge from the CLI:
Example Dir_1 Dir_2 Dir_3 | sort { ($_.Matches | Sort-Object LastWriteTime | select -Last 1).LastWriteTime }
Now filter the list to only show the *.txt files (but still show all the references from non *.txt files). You can't just grep .txt as this would also show *.cpp files that were referenced by a text file.
Example Dir_1 Dir_2 Dir_3 | where { $_.File.Extension -eq '.txt' }
There are definitely times when I will decide to use bash for some scripting, but there are a lot of other times when I choose PowerShell as the most efficient for the task - even on Linux.
So when do I use it on Linux? I found it easier than bash to work with directory trees, JSON and XML files, as well as interacting with databases and custom C# libraries. The same utilities that sorts, filters, and display directory listings (foreach, where, sort, select) can also (for example) manipulate records from a JSON file. That makes it very elegant and useful.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
You could try GiT Bash, i find it more convenient. But I guess you have already to many scripts under Cygwin.
Re: (Score:2)
Re: (Score:2)
Strange, I usually just download the zip and unpack it, and put the location into the PATH.
Sometimes I use an installer, which is handy if you want to have the ability to click on a file or directory and do "open a Git Bash here".
Re: (Score:2)
Many Windows environments preclude local users from installing software, or restrict the installation of potent, flexible tools like git and cygwin and Windows for Linux. Having a built-in, vendor supported scripting language for remote administration tools is invaluable. Even tools like the "extensions" for Azure virtual machines provide built-in access to powershell commands, so the investment in setting it up is often much lower than for git-bash or for Cygwin.
Re: (Score:3)
Not enough people that use powershell commenting.. (Score:5, Informative)
I fucking love it.
Long time windows admin who also spent his entire career on this site, and did more than dabble with linux. Powershell is just awesome, and a lot of windows admins are just starting to dip their toes into it. ISSO's are still frightened of it, despite being around for almost 20 years. So what's so great about it?
Let's talk about things from an AD perspective. With ADUC (Active Directory Users and Computers) it's all very click click gui. There's not a whole lot I can do there other than work on one user at a time. Let's say tomorrow, everyone in marketing moves to a new building. I can list all of them with...
get-aduser -filter 'department -like"Marketing*"'
But let's say I wanted to update the address.. Powershell works with what it calls objects. Each user returned from that query is an object, and each object is formatted the same. Objects are passable through the pipe.. So if I wanted to update all of them at once I could...
get-aduser -filter 'department -like"Marketing*"' | set-aduser -streetaddress '123 main street' -city 'Wichita' -state 'Kansas' -postalcode '123456'
Let's say I want to take a more cautious approach, and work off CSV files.
get-aduser -filter 'department -like"Marketing*"' -properties * | export-csv c:\temp\marketing.csv
and after editing the CSV a bit, I can read it back into AD with.
import-csv c:\temp\marketing.csv | foreach {set-aduser $_.samaccountname -streetaddress $_.streetaddress -city $_.city -state $_.state -postalcode $_.postalcode}
Each $_. is the header of the CSV column.
Wait there's more though... Enter-pssession! Enter-PSsession is like a SSH shell in linux (but for windows boxes) With it I can jump on any computer on a network and run commands remotely.
Related to enter-pssession is start-pssession, which allows you to send a pssession to the background (sort of like & in bash) except it also has qualities like screen, allowing you to open that session again.
What about groups? Your marketing department wants a distribution group "Men who stare at goats" and they want everyone in marketing added to it. After creating the group you just...
get-aduser -filter 'department -like"Marketing*"' | foreach {add-adgroupmember "Men who stare at goats" $_.samaccountname}
Let's get really deep in the weeds now. Powershell can now do GUI's via dotnet WPF forms. Actually, it can do everything dotnet. People write all kinds of crazy shit with posh. Did I mention it also does regex if you need to parse some shit?
I enjoy it way more than Perl. I don't have to write my own parser for everything. I don't have to make sure what I parse is sanitized. Loops are sort of plain english to understand. It kind of borrows the best from Perl, C, Python. Being able to build Gui's means even the dumbest dolt in your IT org can use your scripts.
It's fucking bad ass.
Re: (Score:2)
To me what you refer to could in theory be done by the old command prompt. Just implement the commands like "get-aduser" as executables and then the shell itself wouldn't be needed.
Every new scripting engine is a new language to learn, and the world is now full of a number of more or less useful scripting languages.
Re: (Score:3)
Right, but you do know that having 500 commands to manage various pieces of software is it's own language anyway, right? So what is the specific, meaningful difference between implementing 500 commands with a consistent syntax that seamlessly work together, and.. implementing them in an extensible shell? Put another way, how exactly does "get-aduser" being an executable help anything?
Instead, you get bash/linux where you can certainly string shit together but you have to go find the syntax expectations betw
Re: (Score:1)
There are a couple angles here. Let's highlight some and let's start with that powershell isn't a shell as a Unix-user would understand it: A command line shell is something that surrounds the ability to run commands "like a shell". It does a bunch of things for you, including telling the OS to start this or that executable.
One of the things it does is keep and expand variables. Another is expanding "glob" expressions. Originally the latter wasn't even in the shell, you had a separate command for that, tha
Re: (Score:2)
Having them as executables helps because then you can easily manage a heterogenous server park. You need to add usersfrom one system to another? Use get-aduser to grab them and pour them into passwd. You need to get all the people who are in marketing on the Solaris machine and add them to the correct group in the ad? Alter one of the scripts from the above overview.
Reinventing the wheel just to get some vendor lock-in is not actually adding anything to what we have. It's exactly that; vendor lock-in. Inste
Re:Not enough people that use powershell commentin (Score:5, Insightful)
In my opinion Powershell is just like every other Microsoft product (especially Windows).
It's an inelegant, bloated, illogical, overcomplex, non-intuitive and awkward mess when compared to competitors, such as Linux and Bash.
Re:Not enough people that use powershell commentin (Score:4, Insightful)
Well,
if you read man pages like you have read/skimmed over your parents post, then your Linux and Bash knowledge most likely is pretty shallow.
Perhaps, you should stop and read again, when he mentions pipes ... just a hint.
Re: (Score:2)
> your Linux and Bash knowledge most likely is pretty shallow.
Lol I've been developing for Linux and Unix OS's since before Linux was even a thing,
Re: (Score:2)
> your Linux and Bash knowledge most likely is pretty shallow.
Lol I've been developing for Linux and Unix OS's since before Linux was even a thing,
But your reading comprehension continues to be very weak. You failed to comprehend t0ger's post. Maybe understandable, it was long. Then when angel'o'sphere pointed it out you apparently failed to comprehend his much shorter post, either.
Note: I have never used powershell, haven't used Windows since Windows 2000, and live in Linux and Unix OSes. But the t0ger's description of piping powershell objects around sounds damned convenient, and could actually be better than the *nix way of treating everything as
Re: (Score:2)
Well,
one could imagine that a line of text in PowerShell is just a "text object" with convenient ways to access its "words" etc. And no one probably prevents one to treat it just liek in unix.
(I did not use PowerShell either, as I do absolutely nothing on Windows that is remotely called scripting, if I have to: I use Git Bash :P and program in bash or awk)
Re: (Score:2)
>> But your reading comprehension continues to be very weak.
I think you need to read what I actually posted, which was simply an opinion that Bash is better than powershell.
>> You failed to comprehend t0ger's post.
Clearly you failed to comprehend mine. I actually made no reference to his post at all.
Re: (Score:2)
Does not change the fact that you seem not to grasp the core difference in piping between PowerShell and Unix-Shells.
Programming 30 years on a mediocre level makes you not a super programmer ...
Re: (Score:2)
Your argument that Powershell must be better than bash, based entirely on the differences in how they handle pipes is both entirely subjective and only a tiny part of what makes any shell better than another. Further you keep making personal attacks based on no actual data. The only point your posts are successful at demonstrating is your own childish immaturity. My only fault here is that I should have remembered not to feed the troll as that;s why I foed you a long time ago.
Re: (Score:2)
Your reading comprehension really sucks.
Your argument that Powershell must be better than bash
I did not do such a thing.
Good luck with your superior bash skills, I really wonder hwo you are able to read a manual.
Re: (Score:2)
Any actual point to respond to here is lost in the noise of your childish mentality and constant personal attacks.
Re: (Score:2)
I did not make any personal attacks.
Why would I?
Re: (Score:2)
I'm not sure where you're coming from on
>non-intuitive
sed/awk/grep by name are non-intuitive. At least in powershell the commands have a standard naming convention of verb-toathing. get,set,test. aduser,adgroup,adcomputer Linux commands are like a bunch of acronyms.
awk -> Awk is abbreviated from the names of the developers – Aho, Weinberger, and Kernighan.
Sed - Stream Editor
grep -> Global regular expression print
wtf? Claiming acronyms are more intuitive is like someone in marketing snicker
Re: (Score:2)
Strike out inelegant and illogical. The week or so I dabbled with PowerShell I found the commands to be highly elegant and logical, at least when you look at it from a programming point of view. Commands were grouped logically the way you see functions grouped in an object oriented language like Python. So maybe that's the competion?
However, I agree that as a CLI, PS sucks, since it's simply easier to type "ls" than list-something-something. That said PS does have built-in aliases that map to those short Un
Re: (Score:2)
Sounds like programmers hate typing which kind of explains the state of general documentation, and the feelings towards Java.
Re: (Score:2)
> Sounds like programmers hate typing
You're exactly right. As a programmer you get rewarded for your ability to get some job done, not for typing more characters than anyone else.
when you're doing something 8-10 hours a day for most of your working life, whatever route you can take to minimise the amount of typing while achieving the same goal is not only much preferred, but directly gives a noticeable increase in productivity.
Re: (Score:2)
Re: (Score:1)
As someone who uses Windows as a development environment - I hate it and still just use cmd if I need to use Windows commands. Its a shame they didn't mimic the *nix commands so we'd have consistency even if bash is an abomination.
are you talking about command names? because there are aliases for common *nix commands in powershell. `get-content` is aliased to cat, `invoke-webrequest` is aliased to curl, `get-childitem` is aliased to ls - these are a few examples i can think of off the top of my head.
Re: (Score:2)
Re: (Score:2)
Probably the biggest thing he's missing out on sticking with CMD prompt is UNC path support. In CMD prompt if I wanted to poke around the hard drive of another computer I have to do a dance with "net use z: \\someserver\somepath"
With posh I can just "ls \\someserver\somepath"
Re: (Score:1)
+1 agree. Also, PowerShell is based on .NET framework, and I fucking hate .NET.
If PowerShell is such a great automation tool I'd really be interested in how many people use it under Linux?
Re: (Score:3)
I work in devops and I have no idea how I'd do my job without powershell. So much of automated build and deployment pipelines relies on powershell. There are alternatives, but none of them integrate everything together anywhere nearly as easily.
Is powershell a great command prompt? Eh, not really, but it's not really meant to be. It's meant to be a scripting language. And for managing Windows machines, it excels at that.
Re: (Score:2)
I'm on Linux so psh is not that relevant, however from how you and comment [1] explains it, it's really more of a scripting tool than a "shell" as one would normally call it, i.e. it's more of an API+an interpreter than a tool to launch other tools and pipe data between them. Whats good about it is that it allows you to automate clicky GUIs, and that it allows you to access certain things that isn't available through the GUI.
How is that really different from earlier MS scripting tools, such as *e.g. one I h
Re: (Score:2)
>i.e. it's more of an API+an interpreter than a tool to launch other tools and pipe data between them. Whats good about it is that it allows you to automate clicky GUIs, and that it allows you to access certain things that isn't available through the GUI. How is that really different from earlier MS scripting tools, such as *e.g. one I have experience in from long time ago) VB6?
Declaring a variable in VB6 requires DIM. Declaring a variable in POSH is just $variablename =. Variables can also be bits of
Re: (Score:3)
I work in devops and I have no idea how I'd do my job without powershell.
Sure, because the operating system you're using isn't Unix. You only need something like powershell because everything on the system tends to be a monolithic tool that does 230472342807 jobs and has to be called with 3497234973429234 different options in order to do them. Before powershell there was REXX, which solved the same problem. You needed a special scripting language just to write scripts that would ultimately be called from OS scripts because that special language knew how to talk to the applicatio
Re:Not enough people that use powershell commentin (Score:5, Informative)
The way I describe it: it's an object-orientated headless-possible scripting engine, allowing compiled custom objects to be interacted from a headless environment. It's a precursor to a headless Node instance (whose scripting language is JavaScript), and PowerShell's native support for compiled objects truly allow simple command-lets to do sophisticated things beyond WMI (windows management interface) but any
In short, PowerShell is what Node/JS would like to be if it were a first-class citizen in an enterprise environment.
Re: (Score:2)
Re: (Score:2)
I have come to appreciate PowerShell... as a non-coder, the only thing I wish was more consistency in how commands handle information. I realize that that depends on manufacturers who create the commands but still.
get-vm | get-vm | get-vmnic | set-vmnic
vs
get-vm | get-vm | get-vmnic | set-vmnic -nic $_
And such things... Finding out the way to properly pass on objects or even info is using more time than necessary IMO.
Similarly When you want to know the UUID of a VMs Harddisk you havre to do something like
(ge
Re:Not enough people that use powershell commentin (Score:5, Informative)
PowerShell and it's objects are awesome ... until they aren't.
One issue I face is that I use PowerShell to manage things on Office 365 / Azure AD that I can't do through the web interface. This is mostly good, except when it's not.
An example, if you're running something like Get-MailboxFolderStatistics on a local Exchange server, the statistics you get back are proper objects, and you can do things like sort them by size.
If, however, your run this against Office 365, you get output back that looks the same, except it's serialised as xml, sent down the line, and then deserialised for display. There's no option to tell it to return sizes in bytes, because you don't need to because it's an object and you can display it however you want. It then returns human-readable sizes (e.g. 12.3 GB, 486 MB etc) and now you can't sort it because it comes back down the line as text. If you want mailbox folders, on Office 365, sorted by size, you then need to grab this text, and parse it to turn it back into bytes, sort it, and then parse it again to turn it back into human readable text.
So you then need to do something like:
Get-MailboxFolderStatistics username | sort-object @{ Expression = {$tmp = $_.FolderSize -replace ".*\((.+) bytes\)","`$1"; [int]$foldersize = $tmp -replace ",",""; $foldersize }; Ascending=$false } | ft Identity,FolderSize
Re: (Score:1)
On: https://docs.microsoft.com/en-us/powershell/module/exchange/get-mailboxfolderstatistics?view=exchange-ps
They recommend using Get-EXOMailboxFolderStatistics instead.
https://docs.microsoft.com/en-us/powershell/exchange/connect-to-exchange-online-powershell?view=exchange-ps
Don't know if that resolves the issue you had or not though.
Re: (Score:2)
No, all output from a remote PSSession is converted to XML and sent to the local shell. It’s only if you’re running PowerShell locally that it returns proper objects. It’s not a deal breaker, but it sure is annoying.
Re: (Score:2)
$cert = Get-ExchangeCertificate -Thumbprint "$certthumbprint"
$tlscertname = "$($cert.Issuer)$($cert.Subject)"
Re: (Score:2)
So... PowerShell is a scripting language with a shell attached?
There's a script I need to run on my machine every now and then, and it requires me to log in as admin. Under CMD, I can just launch it with the Ctrl-Shift-Enter trick. Under PowerShell, the way I have to do it is launch the shell and type, 'Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process'
As a shell, it's still bloated, overly complicated, and confusing.
Re: (Score:2)
So... PowerShell is a scripting language with a shell attached?
Obviously not, since the ability to run scripts is disabled by default.
There's a script I need to run on my machine every now and then, and it requires me to log in as admin. Under CMD, I can just launch it with the Ctrl-Shift-Enter trick. Under PowerShell, the way I have to do it is launch the shell and type, 'Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process'
You can also just Ctrl-Shift-Enter PowerShell too. The Set-ExecutionPolicy you are running is not about running as admin, but about running scripts at all. Your example has been limited to just the current Process, so it will not be saved. If you just removed the Scope specifier altogether then it would be saved for the local machine. You would never have to type that in again (although you would still need to Ctrl-Shift-Enter to do admi
Comment removed (Score:4, Funny)
Oh, the irony (Score:2)
It is ludicrous to believe having the courage to go against the flow in any corporation run by famously thin-skinned Peter Thiel would get you anything but a pink slip.
Re: (Score:2)
Re: (Score:2)
Funny how that works, isn't it!
Demoted for powershell? (Score:1)
Yes, not uncommon (Score:4, Insightful)
Re: (Score:2)
SImilarly, most people on Slashdot ( and elsewhere ) automatically rate something that attacks their political positions as -1 Troll and reply with an ad hominem attack on the author.
Debate or STFU.
Re: (Score:2)
In fairness (Score:3)
Re: (Score:3)
Soo... PowerShell Crescendo.
Re: (Score:2)
Re: (Score:2)
Re: (Score:2)
Unsurprisingly since there was no migration path many users stuck with command prompt or used bash.