Steven Schveighoffer wrote: > [snip] > > -Steve
This is getting rather inflammatory, so let me clarify a few things. What Yigal should have said was that when everything is a file, there is no API for the CONTENTS of files. Yes, you can manipulate files, but it's a bit like Variants in D: you can't do anything useful with the contents unless you specifically know what they are. Powershell is designed to work with managed (.NET) objects. It can dynamically introspect these objects and pull them apart, mutate them, convert them, etc. Imagine if every file on a UNIX system also carried around a reference to its own parser, and a description of how to interpret the data. THAT is what Powershell has over UNIX shells. For example, the output of the "ls" equivalent is a table of objects. By default, it gets toString'd and displayed as a table. However, you can pipe this into a command that reorders columns. Or sorts. And you don't have to dick about with ensuring the filenames don't contain whitespace or newlines because the file names are carried around as actual strings that know their own length. Unlike UNIX, where everything is a file, to powershell everything is an object. So the list command can be used on a directory or on an object that is an aggregate of stuff. For example, you can use powershell to browse the registry as if it was just another part of the filesystem. I won't say that "everything is a file" is a failure, but powershell *definitely* exposes a superset of UNIX's functionality. Anything you can do with a UNIX-style environment, powershell can potentially do better. Microsoft really hit one out of the park with powershell, although it remains to be seen if anyone will actually use it. -- Daniel.
