Published: May 20, 2009
Updated: February 29, 2012
Applies To: Windows PowerShell 2.0, Windows PowerShell 3.0
Most shells, including Cmd.exe and the SH, KSH, CSH, and BASH UNIX shells, operate by executing a command or utility in a new process, and presenting the results to the user as text. Over the years, many text processing utilities, such as sed, AWK, and PERL, have evolved to support this interaction.
These shells also have commands that are built into the shell and run in the shell process, such as the typeset command in KSH and the dir command in Cmd.exe. In most shells, because there are few built-in commands, many utilities have been created.
Windows PowerShell is very different.
-
Windows PowerShell does not process text. Instead, it processes objects based on the .NET Framework platform.
-
Windows PowerShell comes with a large set of built-in commands with a consistent interface.
-
All shell commands use the same command parser, instead of different parsers for each tool. This makes it much easier to learn how to use each command.
Best of all, you do not have to give up the tools that you have become accustomed to using. You can still use the traditional Windows tools, such as Net, SC, and Reg.exe in Windows PowerShell.
This section includes the following topics:
"Windows PowerShell does not process text. Instead, it processes objects based on the .NET Framework platform."
OK.
"Text" I understand.
But "objects based on the .NET Framework platform"? Sounds like a lot to learn before one can do anything with PowerShell?
And then a couple of pages later, it says, "You can also capture the text that Windows programs generate and use that text in Windows PowerShell".
So it "does not process text", except it does.
Scott M:
PowerShell is an "object-oriented" command line tool. When the help says that it doesn't process "text", it means that arbitrary command names that have embedded functionality attached to them are not supported. Instead, PowerShell uses objects from the .NET Framework as the core "type" (rather than text) that is processed. This is beneficial because the .NET Framework has many thousands of objects that can perform a vast array of tasks, so this "shell" is more "power"full than others because it has a much larger functionality base.
Also, "capturing" text is not the same as "processing" text. Capturing text is done with String objects. The text itself is benign. If the text was "Format C:" it would not actually be "processed" as it would with cmd.exe. Instead the string of characters are stored for use somewhere else.
Of course, to make full use of PowerShell as an automation tool, knoweldge of .NET and programming is fairly important. Dealing with loops, doing different things based on circumstances, handling errors, etc all require some level of programming skill.
My .02€ worth.