>>21544
PowerShell isn't a superset of .bat. If you want to read from stdin, you can use Read-Host.
>I think dir also behaves differently than in cmd
Everything works differently in PowerShell than cmd or bash. Traditional shells are built around this idea that "everything is just strings". Pipes and redirects are used to take the string written from one program's stdout, and put it into the stdin of another. There are no data types in either language, only strings.
Compared to that model, PowerShell is... basically just shell language syntax bolted on top of a .NET language. Every thing has an actual data type, and most commands you use are actually classes, and not executables external to the shell. These special commands are known as "cmdlets", and the output of them is an object, not a string. It's just that when you type the command into your terminal emulator, the end result is made into a string for you to view. The dir command is an alias for Get-ChildItem, which can do more than just enumerating the files in a directory (it can recursively enumerate them like the tree command too). Rather than returning a string, it's returning an array of objects whose type is System.IO.FileSystemInfo.DirectoryInfo. What's so useful about using an object instead of a string? You can take that output and put it into another command to sort/order and filter by its individual properties.
>it's only used on windows so that's kinda meh
It's fully capable of being used on other operating systems. It's just that it's most popular in Windows due to them kinda being forced to use it.