To me, the main annoyance of bash is the constant need to use grep, sed and friends to parse structured data from unstructured stdout, and also many traps with variable expansion, and need to use hacks such as xargs. But I agree that it matters more when writing scripts than when using it as an interactive shell.
OTOH, the huge problem of PS is that it only works on objects in memory. If you are interoping with a classic console app that writes to stdout, that means that you're getting a string. If you don't have enough memory for that, too bad. I also don't like the .NET object model in that role (it's fine as is, just not very appropriate as a generic structured data interop protocol).
If I had to make a list of things for a perfect shell, I'd say it should use a consistent naming scheme more like PS (but with aliases) and similar expansion rules, but get rid of the notion of passing objects around, and stick to text stream - but also define a standard structured format for them, which would probably be JSON for the sake of not reinventing the wheel.