A couple of days ago I read a blog post by Stephen Ramsay, a professor at the University of Nebraska-Lincoln and a Fellow at the Center for Digital Research in the Humanities. In it, he mentions that he has all but abandoned the GUI and finds the command line to be "faster, easier to understand, easier to integrate, more scalable, more portable, more sustainable, more consistent, and many, many times more flexible than even the most well-thought-out graphical apps." I found this very thought-provoking, because, like Ramsay, I spend a lot of time thinking about "The Future of Computing," and I think that the CLI, an interface from the past, might have a place in the interface of the future.

One thing PowerShell has right is that it extends interprocess pipelining beyond simple text streams. If I had the time I'd love to take Bash, strip out some of the more arcane syntax and add the concept of structured data pipelining; imagine what you could do if you could get common commands to emit say, objects as JSON data and then manipulate them?

One thing PowerShell has right is that it extends interprocess pipelining beyond simple text streams. If I had the time I'd love to take Bash, strip out some of the more arcane syntax and add the concept of structured data pipelining; imagine what you could do if you could get common commands to emit say, objects as JSON data and then manipulate them?

I would actually argue that the non-use of simple text streams is exactly what is wrong with PowerShell.

While I've used Bash for quite a while, I've tried to pick up PowerShell (namely to start replacing Batch scripts) and find it far easier to just use WSH+JavaScript that to interact with the PowerShell.

As with much of Microsoft Technology, it's way too complex to actually be useful and efficient.

I would actually argue that the non-use of simple text streams is exactly what is wrong with PowerShell.

Stream of objects can be a stream of strings - which is how "legacy" commands are integrated into PowerShell. You can work that way if you prefer.

However, the object-oriented streams add tremendous robustness, simplicity and readability to scripts and scripting. There are far fewer surprises than with *sh scripting.

While I've used Bash for quite a while, I've tried to pick up PowerShell (namely to start replacing Batch scripts) and find it far easier to just use WSH+JavaScript that to interact with the PowerShell.

As with much of Microsoft Technology, it's way too complex to actually be useful and efficient.

It is always hard to learn new skills. However, PowerShell is well worth it.

now, the simple text streams don't eat much memory, makes interrupting things when you find what you need etc.

Like looking in some database thing and grep out of it. It's faster with bash, because it uses small pipes instead of buffering the whole stuff, even if the text is already there.It will presented at the end.

The biggest drawback is that large datasets will eat up all memory.

Powershell in it's best for is a small subset of what scripting can do under unix type of operating systems.

now, the simple text streams don't eat much memory, makes interrupting things when you find what you need etc.

Like looking in some database thing and grep out of it. It's faster with bash, because it uses small pipes instead of buffering the whole stuff, even if the text is already there.It will presented at the end.

Ahem! PowerShell objects are *streamed* as well; they are pushed through the pipeline one-by-one. Because it is all in-process what is pushed through the pipeline is actually only an in-memory pointer. That is arguably both *faster* and more memory-efficient than constantly serializing to/from strings.

I don't know where you have gotten the idea that PowerShell would buffer everything until the end?

The biggest drawback is that large datasets will eat up all memory.

Once an object has been passed on through the pipeline it is eligible for garbage collection. Large datasets will not need to be allocated all at once.

Powershell in it's best for is a small subset of what scripting can do under unix type of operating systems.

PowerShell is much more capable than unix/linux *sh style shell scripting, more consistent, more robust and more secure.