Microsoft Replaces Command Prompt with PowerShell in Latest Windows 10 Build
news.softpedia.com
news.softpedia.com
Display mode: MODE CON[:] [COLS=c] [LINES=n]
Added this to the end my Microsoft.PowerShell_profile.ps1 in my $HOME\Documents\WindowsPowerShell directory. (run: "notepad $PROFILE" in PS)
MODE CON COLS=200
Clear-Host (I get some artifacts)i miss ctrl-d for example
Also MS should really improve the inbuilt apps to do this stuff.
Terminal.app is much, much better than conhost, even after the Windows 10 update. It's fast, supports a ton of thoughtful features (such as customizable title bars via extended ANSI codes, real line wrapping during resize, good Unicode support from the very beginning, etc.). With Terminal.app I can be quite happy and productive even with someone else's Mac or with the default settings. I've used iTerm2 but their features weren't compelling enough for me, and the iTerm font rendering is noticeably worse in many ways. Apple has also been very good about giving Terminal.app continuous updates.
On Windows though I have almost always had to install MinTTY or something just to get a halfway usable terminal emulator. The default emulator is just so limited - Unicode support is very plug and pray, the title bar is totally locked, and having to use Windows APIs to change text formatting is a pain. Conhost is also amazingly slow when it comes to large amounts of text, so much so that printf can be extremely detrimental to program performance just because it has to wait for the terminal window to catch up.
PowerShell's terminal experience is better but not quite there. And, PS suffers from extremely long load times - I've seen it take upwards of 10 seconds to start without any extensions. That means that in practice I often pop open cmd.exe even if PS is a better choice, just because I don't want to sit through a long load time.
Microsoft really should get their Terminal story in order. I'll definitely try out ConEmu the next time I sit in front of a Windows box, but like you I wish MS would improve their own apps!
I once started a Chinese character flash card program in Python on Windows.
The yak shaving was unbelievable. I never got a working version, but I learned a lot about code pages, and why "building a console from scratch" is not actually the right answer to "I want to be able to test a toy program I'm making before it's finished."
Small price to pay to be able to pipe objects, man!
Did I miss something?
Properly configuring cmd.exe was enough for me. Then again I only use the terminal on "as required" basis.
(On older versions of Windows, ConEmu[1] does that, too, but it's third-party software, of course. It also supports tabs!)
[1] - http://cmder.net/
> If you have trouble with anything I am happy to help. But you will have much better chances to find solutions on the pages of the upstream projects. Those are:
Console emulator ~ Conemu (https://conemu.github.io/)
Cmd.exe enhancements ~ clink (https://mridgers.github.io/clink/)
Unix tools on windows ~ git for windows (https://git-for-windows.github.io/)In Win10, you can resize the buffer with a drag as well.
What I really like though: you can now use Shift + arrow keys to select text and C-c/C-p to copy/paste.
ConEmu can even integrate stuff like Putty.
So this explains the joy I feel over small improvements like those mentioned above.
If you're going to use ConEmu, just go ahead and use the straight & regular OpenSSH command-line ssh tool.
Then you get all the standard niceties you can stash away for global reuse in ~/.ssh/config.
I don't miss PuTTY one bit.
You just needed to go in to the properties of the window and increase the screen buffer size (both width and height). It's one of the first things I'd do upon installing a Windows machine.
Jeffrey Snover [MSFT]
I don't know what's changed now but they've rolled that policy away. Maybe virtualization?
I don't know whether it still was necessary, but the removal of support for 16-bit applications from 64-bit Windows 7 will not have hurt there.
> Every idea for a feature starts out with an imaginary deficit of -100 points. That means it has to demonstrate a significant net-positive effect on the product as a whole in order to emerge as being truly worthy of consideration.
I still dont understand how this was not "fixed" years ago, sure some config windows have fixed widths because it makes sense, but something as a terminal obviously needs the ability to grow (or shrink), especially after they introduced sticky windows and people actually used "tiling"
https://brianreiter.org/2010/01/29/powershells-object-pipeli...
I bet it still truncates output of the ">" operator to the console width, too.
'troll' * 1000 > out.txt
Open in NotePad++, no weird newlines in the wrong place, content not truncated.Were you using |format-table and |format-list (ft, fl) to explicitly format the text for console viewing, then redirecting that to a file?
'troll' * 1000 > troll.txt
.. works fine as you say Select-String -Path .\troll.txt -Pattern "t" > t.txt
.. wraps the output at the console width. Which means you can't use it as a grep replacement. Select-String -Path .\troll.txt -Pattern "t" | Set-Content t.txt
or
sls 't' .\troll.txt | sc t.txtThis is the main reason I still use cmd.exe
One performance tip I picked up early on: If you're passing around large object sets you need to operate on try to keep them in a pipeline. Populating a variable and interacting with it is arguably more readable and maintainable, especially for junior people, but it has a heavy cost in terms of memory.
That said every version of posh is better than the last so I may be wrong or overestimating the impact for the newest versions. YMMV, don't believe everything you read on the internet, etc.
Jeffrey Snover [MSFT]
If you don't pass the flags zo handle it as binary in those cases stuff breaks.
Piped binary data, not corrupted, since a long time before that blog post was written.
What you can't do is run native commands, and read their standard output as a byte stream without going through .Net and Start-Process.
"The backups fail to restore" is such a common occurrence, it's really scary.
Remove-Item Alias:cat
Remove-Item Alias:cp
Remove-Item Alias:curl
Remove-Item Alias:echo
Remove-Item Alias:ls
Remove-Item Alias:man
Remove-Item Alias:mv
Remove-Item Alias:pwd
Remove-Item Alias:rm
Remove-Item Alias:wgetLKML gets hundreds of messages every day. When I used to read it I had a set of search filters to prioritize it. Anything I didn't get to I simply marked Read. There's no way to catch everything on there.
Maybe get it passed through by someone who is in Linus's email filters.
Although it's been a year and you probably don't care anymore. :)
Although I'd still consider curl/wget to be specific tools and not generic commands, so emulating them seems a bit weird.
https://news.ycombinator.com/item?id=12319670
Edit: the RFC intended to address the curl author's issue was rejected.
https://github.com/PowerShell/PowerShell-RFC/blob/master/X-R...
For those, it's also possible to evade the aliasing just by explicitly appending the .exe onto the command. 'pwd.exe' gets you the GNU version.
For example, a .jpg image can be marked as executable, but it is not an executable. This can happen on both Linux and Windows, and I believe it is handled by the filesystem. I supposed the term "marked as executable" could be used for this, while "is executable" could mean the OS will grant it a PID using the correct system call, but this is uncommon.
On Linux, you can attempt to execute any file using a system call like execve(). Similarly, on Windows you can also attempt to run a JPEG using CreateProcess(). I know the Windows shell probably won't run a JPEG even if it is marked executable(there are a collection of Registry entries that map file extensions to programs that run them, for the shell), but I don't know if the CreateProcess() API function rejects files without the correct extension.
If both CreateProcess() and GetBinaryType() fail to detect a PE file with the incorrect extension, then you can reasonably say that Windows uses the extension to determine whether a file is an executable(though not whether it is executable). The behavior of the shell isn't sufficient.
alias some-command='some-command.sh --arg'
and then running "some-command" versus "some-command.sh". (The Window's shell does interpret stuff with the ".exe" suffix differently, just it's not the key factor here.)Not to mention user experience. Adding these aliases made moving back-and-forth between nix and Windows much less jarring for me. They also really helped drive home the difference between something like bash and posh because investigating the differences between the aliases and their nix namesakes revealed their respective strengths and weaknesses.
I imagine changing aliases would be out of the question since they should have priority over PATH but perhaps a special conditional case for these the first time they're run interactively would be to check for the nix equivalent in your PATH and prompt to see if you'd like to remove them.
If you have a lot of experience with something like bash and you can run circles with it PowerShell probably doesn't add a lot of short term value.
So imagine when they packaged that for Mac, that assumption is no longer true.
Granted, don't use aliases in scripts and all that.
A new "bottom of the stack" alias instead of the current one that takes precedent over executables.
What? I'm a big PowerShell fan, but I see the need to keep cmd around for a while. Clobbering it before it's phased out seems problematic.
The release post spells out exactly what's changes - win-x menu, context menu kind of stuff.
With the amount of online posts that tell you "to achieve X, open command prompt and run ...", it would be a bad idea to break any of them that go beyond a simple command. (so for example any "FOR ..." lines)
ls=dir=gci="Get-ChildItem"
But you can't run just run "dir /s". You'd have to say "Get-ChildItem -Recurse" which can be shortened to "dir -Recurse" which can be shortened to "dir -r".
When scripting, you try to use the longform versions. With one-liners, you just sort of fall into whatever paradigm you were previously accustomed to for your first argument.
For example, bcdedit with its {}-delimited GUIDs breaks in PowerShell without additional quoting, but works fine in cmd.exe. Makes following online instructions tricky if you're not familiar with that nuance.
Thanks.
-bcdedit /c {xxxx-xxx-xxx-xxx} (= {..} is parsed as a code block)
-invoking executables with spaces in path bcdedit --% /c {xxxx-xxx-xxx-xxx}
& 'C:\Program Files\Foo\Foo.exe'Cortana supports to do list now
Dial support for map app
Bringing 3D to Everyone via the Paint 3D Preview app (RIP paint.exe, I am going to use picpick or paint.net from now on)
Read EPUB books in Microsoft Edge
Improved Typing Experience with Japanese and Chinese Input Method Editors
New Get Office hub for Windows Insiders
source:
http://winaero.com/blog/microsoft-is-killing-the-classic-pai...
http://winaero.com/blog/microsoft-releases-new-get-office-hu...
http://winaero.com/blog/edge-gets-epub-support-in-windows-10...
https://www.neowin.net/news/cortana-will-now-keep-track-of-y...
https://www.neowin.net/news/microsoft-adds-support-for-surfa...
https://www.neowin.net/news/windows-10-build-14971-for-pcs-n...
https://www.neowin.net/news/here039s-what039s-fixed-improved...
CMD is always instantaneous.
I realize that PS is doing a lot more work to match commands but sometimes simple is all that is needed.
Even more in V5.1 (which ships with WS2016).
But still slower than CMD.
CMD starts very quickly but then you have CMD. :-)
Jeffrey Snover [MSFT]
dir C:\
I have to learn to type List-Directory-With-Files Drive=C Folder=/
(made up example, but you get the point)But all parameters on DIR and LS seem to result in errors, even "dir /h", "dir /?", "dir -h", "dir --help", etc. That is a bit annoying.
The issue already happened with cURL.
emacs some-old-file-i-dont-want.c
Emacs would be an alias for rm on my system.That being said I think it was quite offensive of MS to use wget and curl as aliases, even though they may have had no ill intentions. I'm ok with using ls and echo and names of other such basic commands as aliases, but with tools like wget and curl that are known for their vast array of useful features you either implement their features and options or you don't use their names.
Well, I can't do my typical ls -la either.
More seriously, how many seconds did it took for the PS to answer to that command?
Measure-Command {dir C:\}
TotalMilliseconds : 2.9708
Measure-Command {Get-ChildItem "C:\"}
TotalMilliseconds : 2.4161 PS> Measure-Command {Start-Process cmd -ArgumentList '/c dir c:\'}
TotalMilliseconds : 14.0138
PS> Measure-Command {gci C:\}
TotalMilliseconds : 10.7484
Second run on each of those went down to closer to 40% of each, yay caching.Of course, the start-process is possibly taking up a chunk of time, there. With no measure-command for cmd, it makes it a little harder to gauge.
c:\temp>timecmd dir c:\
Volume in drive C is Windows
Volume Serial Number is A0A8-6684
Directory of c:\
01/11/2016 12:45 <DIR> AMD
...
17/11/2016 12:52 <DIR> Windows
9 File(s) 25,337 bytes
18 Dir(s) 71,423,356,928 bytes free
command took 0:0:0.08 (0.08s total)
bat from http://stackoverflow.com/a/6209392[1] http://stackoverflow.com/questions/673523/how-to-measure-exe...
Measure-Command { gci C:\ }
TotalMilliseconds : 1.3334
It's pretty fastI don't know how many times I've been in a cmd shell and typed ls and then swore at things.
* cat.bat: type %1
* clear.bat: cls
* diff.bat: fc /n /w %1 %2
* ls.bat: dir /w %1%
* pwd.bat: cd
* touch.bat: echo . >> %1
* top.bat: tasklist
All have an @echo off at the top too. Touch is a little janky, because I couldn't figure out how to actually create an empty file with nothing in it from the command prompt.
I'm actually not really a Linux person, but on Mac you kinda have to use these, so I got more used to using them than the Windows counterparts.
copy nul %1 >nul
to get an empty file. It's not a replacement for touch, though, as touch will do something different to existing files. Your attempt will silently overwrite the file in that case.1 line file: @type %1
It is a short version for
Get-ChildItem -Directory C:/ ls c:\
or
gci c:\For example, if you type
dir | sort <TAB>
it suggests Attributes, BaseName, CreationTime, .... All properties of file objects (which is what dir returns).Also there is PowerShell ISE, which is a IDE for powershell, but I haven't really tried it yet.
Yes you can type -?, but that's as bad as having to go on the web to read the documentation. It's disruptive. The point of a good auto-complete is to have a list at your fingertips with a short description of what it does, without interrupting your train of thought.
You can press ctrl+space and it pops out a list of options to choose from, then you move with the arrow keys. It works for parameters and values (if there's a set to choose from):
I've taken a screenshot to illustrate: http://i.imgur.com/d7MVYma.png
The tab completion is not static either. If you type: ps <Tab>, it will tab through all the current processes.
I didn't know about the CTR+SPACE. That being said it doesn't seem much more insightful than TAB. And no description of what the argument does.
You'll never get a drop down list in the host terminal windows has it doesn't have a GUI layer like that. Wrap it in a electron app and make one.
you can type `dir -<tab>` and cycle through the options. type `get-help dir` to see what they do or install posh-git and use `dir -<ctrl-space>` to get a menu of options to choose. I didn't know about -?
Except you do, with PSReadline, built into Windows 10 PowerShell.
> As a result, PowerShell officially replaces the Command Prompt in the Win + X menu, so when you right-click the Start menu, you’ll only be allowed to launch the more powerful app.
This is an older change - I have this behavior in 10.0.14393.0 (ie, current stable).
cmd launching posh is new though.
[1] Quick check done on my Win7x64 laptop.
I can't imagine any scenario in my actual usage where I'll have 4mb (plus whatever is needed to actually do the work) but not 100mb (plus whatever is needed to actually do the work).
Also, on my machine (windows 10 stable branch) each PS window takes up about 20mb (at least the task manager is telling me that, I didn't dive any deeper)
The release announcement post says "Typing “cmd” (or “powershell”) in File Explorer’s address bar will remain a quick way to launch the command shell at that location."
I honestly kind of wish it was aliases - I regularly launch a cmd window due to decades of muscle memory, then remember I really probably wanted powershell.
As noted elsewhere, command processors internals like 'dir' and 'copy' are supported, but aliased to something else. In the case of dir it's aliased to Get-ChildItem, and copy to Copy-Item.
The latter breaks my favourite quick file create method:
C:\temp>copy con example.bat [return] commands go here^Z 1 file(s) copied.
I had a quick look at Copy-Item and there is no obvious way to use it to the same effect that I can see.
[edit: added the [return] to make it more obvious]
I wonder how feasible it would be to build a powershell-like environment for Linux on top of Python.
Well, you could just run PS itself.
https://github.com/PowerShell/PowerShell/blob/master/docs/in...
[0] http://xon.sh/
The problem was that Bash on Windows wasn't effective. At the heart of the matter is the difference in architecture between Unix and Windows. In Unix, most everything is a file so if you can modify files and restart processes, you can manage everything. In Windows, most everything is an API so tools that manipulate files don't do much for you.
Ergo - we needed an admin automation model which supported an API oriented architecture. Thus PowerShell.
NOTE - Bash on Windows today has a very different focus - it is not about managing Windows (which it still doesn't do) - it is about using OSS tools to develop OSS Software. It does a great job at that.
Jeffrey Snover [MSFT]
I didn't WANT to run Windows - I was forced into it.
It would not surprise me in a few years to come, to find even sooner than expected that "Windows" had become another variant of Unix in effect if not entirely in fact.
Have to re-write all of them?
Ditto with VBS. You can execute VBS files from any context on Windows (e.g. double click, PS, CMD, etc) and they'll always use the cscript engine.
> Typing cmd in the run dialog will launch PowerShell as well, so Microsoft has made a significant step towards phasing out the traditional Command Prompt.
Imho that sounds like stupid idea (and I like PS).
You can also nest prompts to switch context between them.
This is extremely unlikely to ever happen. As long as people have .cmd and .bat files they need to run, cmd.exe will still be around. They're not going to just remove it and break all those scripts.
CMD.exe will be around to support script execution for a long long time.
Jeffrey Snover [MSFT]
PascalCase is well-established in the Microsoft developer ecosystem. It goes at least all the way back to Win16 and Windows 1.0 (it using the Pascal calling convention might have something to do with it, perhaps).
More importantly, it is used uniformly in .NET, and PowerShell builds on top of .NET, and deals with .NET objects directly, which have properties like e.g. `FullName`. So it makes sense for consistency.
This is so important for things like Google Code Jam, etc.
_________________
¹ The redirection syntax cannot easily accommodate an encoding, so in general you cannot really use it everywhere anyway. I often need to use the system's legacy codepage instead of Unicode, so UTF-8 by default would be just as useless there. GCJ, however, could just accept text in any common encoding instead of insisting on ASCII. Detecting UTF-16 isn't hard, even though common Unix tools tend to treat it as arbitrary binary data instead of text.
Generally I'd say > is a convenience feature more than an actually useful construct, at least in a shell like PowerShell. On Unix-likes > simply dumps bytes since that's what the shell is built around. For PowerShell you could just as well say you'd dump CLIXML instead, since the shell works with objects. Since you have a few valid options you could either try to shoehorn them into the syntax, either with various funny characters
Get-Data > data-as-utf8.txt
Get-Data >@ data-as-clixml.xml
Get-Data >% data-as-utf16.txt
...
or add another expression somewhere Get-Data > data-as-utf8.txt,[Text.Encoding]::Utf8
all of which are options I'd say don't really fit into PowerShell, nor should they be entertained. Does it really matter whether the last part of a pipeline is a redirection operator or just a terminating command that writes the data to a file? Conceptually I'd say having the pipeline end in a pipeline element instead of something entirely else is preferable since it reduces the number of distinct concepts.$PSDefaultParameterValues["Out-File:Encoding"]="utf8"
Jeffrey Snover [MSFT]
with PS you pipe objects. The pipeline is very much the way to move data between cmdlets.
each of the linux commands you listed has an equivalent PS cmdlet.
I have switch to xfce4-terminal for a while in all my system....
Peristent = close the terminal then open it and the last commands are available.
And yes, I know you can hack it to be persistent.
- You can't even run your own scripts without performing the Set-ExecutionPolicy ceremony first or signing your scripts.
- It's way too verbose.
- It's a strange bird that next to nobody uses, so there's zero motivation to learn it.
- It's not "old reliable". You can't depend on it working due to the first point and also due to the fact that they're still working on it and even in 2016 they broke some PowerShell stuff with updates that needed to be uninstalled (KB3176934).
Every piece of microsoft software must provide a ps interface. It's an engineering directive.
The main complaint I see about powershell is that it isn't bash. The object pipeline in powershell can be so much more powerful than parsing text between commands. After all, that's why we have data types instead of storing everything in strings.
Walk into any office and ask an IT guy to run "ipconfig". They'll open up cmd.exe without even thinking about it.
I read a lot of programming tutorials. Nobody ever reference PowerShell in them. They always instruct people to open cmd.
Do you have any evidence to the contrary?
There's a lot of cargo-cult copy and pasting in the powershell community.
We have had Powershell for 10 years now. Has it taken off in a big way? No. The admins you mentioned use it because simple automation is the one thing GUIs cannot provide and MS had to face this after over a decade of denial.
Do people get out Powershell instead of Python to do cool new projects that are unrelated to devops or admin work? Some maybe. But the real music plays somewhere else. And some of the reasons for that have been mentioned by the GP.
Right tool for the job and all...
And how much people with those be? Probably a lot less that software developers in general, and non-windows admins.
This would be a good move if it was on Windows Server.
In Unix, you have to chmod a+x a file before running it. And you have to do it for every script you want to run.
So to run 1 cmdlet to enable all scripts seems a bargain. (Honestly I could be missing something and I probably am because you are not the first person to mention it. I just can't connect the dots.)
Jeffrey Snover [MSFT]
Was it just to prevent accidental script execution?
It is ABSOLUTELY NOT a security mechanism. That is why we we support this:
Set-ExecutionPolicy -ExecutionPolicy Bypass
I wanted to make it:
Set-ExecutionPolicy -ExecutionPolicy DoAnythingBecauseTExecutionPolicyIsNOTASecurityFeature
But the team didn't like that. (I should have overruled them on that one :-) ).
Jeffrey Snover [MSFT]
Also, I might not want every script to be executable. With Unix I can choose which ones are executable and by whom. With PS it's all or nothing. :/
Try doing a: Get-ExecutionPolicy -List to see what is setting it.
Then use -SCOPE on Set-ExecutionPolicy.
BTW - I hear you on the "only chmod the scripts you want" - that is a nice benefit of the Unix model.
Jeffrey Snover [MSFT]
I finally gave it a solid chance one day and I've found that it can be surprisingly nice and powerful to work with.
You can globally disable policy enforcement. Maybe not the most "secure", but it's not something I wish to bother with. There is also a really nice package management system for PowerShell modules with things like git integration and etc.
You can check out my shell configuration here: https://gitlab.com/lholden/WindowsPowerShell
As for longwinded, I hate using ACL in Powershell. Let's say you have to reestablish FullControl on a bunch of files as an Administrator and you don't have Write access. It's so convoluted and it can even fail silently. So much easier to just use icacls in a single line.
- Set-ExecutionPolicy can be set with a single click from the "For Developer Settings." Just scroll down and hit Apply three times and your machine has sane developer defaults (inc. ExecutionPolicy).
- The verbosity means that you can "guess" PS commands. Each PS command is a set layout with an action word (e.g. Add, Clear, Get, Write, etc) and then target (e.g. Set-Alias, Set-Date, Set-Service, etc).
- A ton of people use PS. In particular SysAdmins are moving from VBS/Bat to PS in droves. No clue what communities you hang out with where nobody uses it?
- It is definitely still a work in progress. But most of the core parts of the language hasn't changed much, if you wrote a PS file three years ago it likely still works today. All they've done is add new cmdlets, new libraries, and new functionality which doesn't hurt backwards compatibility.
That's a really low bar.
Isn't Windows supposed to have a legendary commitment to backwards compatibility? 3 years of backwards compatibility would be nice for a bleeding-edge development environment like node.js that you can tear down and replace whenever you want, but not for your operating system shell.
Major functionality, probably the worst name you could come up with.
Being able to predict a PS cmdlet based on patterns works. I know, because I use it daily.
heh.
heh heh heh.
hahahahahahahahahahahahahahaha
There is no reason to be dramatic.
Scripts that used #!/bin/bash still worked, scripts that actually used only sh syntax and #!/bin/sh still worked.
With Windows 10 I am sadly realising that I have very little control over when things change and even less knowledge of what those changes will be. For software, this is a nightmare. As a maintainer, I will never know what changes are going to affect my software if I am not informed.
As a user, I no longer know when a feature of my computer that I use daily will disappear. If I used cmd yesterday, will it disappear tomorrow?
Who wants to be the passenger let alone the driver of a car if it steers and accelerates randomly despite your best efforts to steer it and drive it? Would you get in a car that removed the gearstick without warning? Would you really want to be in a car that accelerated and steered at whim?
This is what Windows 10 feels like, particularly compared to my 20 years of using Windows prior to it (Win3.11, 95, 98, Me for a day, XP, Vista for as little as possible, 7 for a lengthy time). With each of those releases, updates were applied by me in a timely manner, with the crucial point being that I could apply updates when I found it applicable for my own personal machine. I could read up on the release notes for each update and service pack to see what was changed.
With Windows 10, I get updates applied in a phantom fashion and do not know what they contain. It's like Apple's vague "fixed an issue" release notes.
EDIT: I must state that the removal of features is not unique to Microsoft, given that sweeping changes affected my Mac after every release since Snow Leopard. However, the key difference is that with Windows 10 you will never have control over when things are installed (unless you use some of the finer controls for updates available with GPOs in an enterprise; still what's the point of having an AD when you don't have full control over the endpoint systems?)
I'm not really a heavy shell programmer. I mostly use it for git and simple scripts.
IMO, nothing's really "sold" me on powershell. It's always come across as some tool that some people like, but I've never really seen a reason to use it. (As I don't do a lot of complicated things in the shell.)
Hopefully this is something that's easy to get used to.
How many other OS/DE combos do you know that can boast anything similar?
This will break a bunch of legacy stuff. That stuff probably deserves to be broken; the cmd.exe syntax has always been pretty disgusting.
There has been a recent spate of talks in Blackhat conf. and other confs, about the versatility of PS.exe, how it is used to perform persistence in comparably little characters, or lines of script than CMD.exe
Some of my Win10 deployments even contain a script which silently disables PS.exe in the installation, and removes every reference to that executable in the registry. There are a few cases where I caught PS.exe re-spawning itself when a Win10 update arrives, so a PS-free deployment is hard to enforce.
I'm referring to something like Powersploit https://github.com/PowerShellMafia/PowerSploit/
Which is a post exploitation tool. Assuming you have a payload in Windows ready to execute, one typically wants to leverage tools already in Windows itself, like Powershell, which can make rootkits and other payloads have a lot less footprint, and make them difficult to spot using heuristics. Most crap payloads are actually easy to spot because their payload is massive.
Essentially my point is that you don't want to make it easy for attackers. For context, one would not want Powershell installed on 1000 Windows 10 installations.
I happen to get paid good money for deploying Win10 kiosks in different offices in my area and Powershell is one of many tools I routinely remove from Windows to decrease the attack surface in Win
PS - Your "PS breaker" machine configuration is going to cause problems. Several of Microsoft's installers already run PS scripts behind the scenes. Plus you're doing it for absolutely no technical reason (just ignorant fear).