xxx
ABOUT THE COVER ILLUSTRATION
ago. They recall the sense of isolation and distance of that period—and of every other 
historic period except our own hyperkinetic present.
Dress codes have changed since then and the diversity by region, so rich at the time, 
has faded away. It is now often hard to tell the inhabitant of one continent from 
another. Perhaps, trying to view it optimistically, we have traded a cultural and visual 
diversity for a more varied personal life. Or a more varied and interesting intellectual 
and technical life.
We at Manning celebrate the inventiveness, the initiative, and, yes, the fun of the 
computer business with book covers based on the rich diversity of regional life of two 
centuries ago—brought back to life by the pictures from this collection.
Pdf rearrange pages - re-order PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Support Customizing Page Order of PDF Document in C# Project
pdf change page order acrobat; how to move pages in pdf acrobat
Pdf rearrange pages - VB.NET PDF Page Move Library: re-order PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Sort PDF Document Pages Using VB.NET Demo Code
pdf change page order; pdf change page order online
1
P A
R
T
Learning PowerShell
T
he first part of this book focuses primarily on the PowerShell language and its 
runtime environment. We’ll cover the complete syntax for PowerShell in detail: the 
various kinds of conditional and loop statements, the operators, and the syntax for 
defining functions and modules. We’ll look at how to configure and use PowerShell 
remoting to do remote access. 
C# TIFF: How to Reorder, Rearrange & Sort TIFF Pages Using C# Code
C# TIFF - Sort TIFF File Pages Order in C#.NET. Reorder, Rearrange and Sort TIFF Document Pages in C#.NET Application. C# TIFF Page Sorting Overview.
rearrange pdf pages; how to rearrange pages in a pdf document
VB.NET TIFF: Modify TIFF File by Adding, Deleting & Sort TIFF
you want to change or rearrange current TIFF &ltsummary> ''' Sort TIFF document pages in designed powerful & profession imaging controls, PDF document, image
how to move pages in pdf files; how to rearrange pdf pages
VB.NET PDF File & Page Process Library SDK for vb.net, ASP.NET
page directly. Moreover, when you get a PDF document which is out of order, you need to rearrange the PDF document pages. In these
reorder pages in pdf; how to move pages in pdf
Online Merge PDF files. Best free online merge PDF tool.
the button below and download your PDF. The perfect conversion tool. By dragging your pages in the editor area you can rearrange them or delete single pages.
change pdf page order reader; how to change page order in pdf acrobat
3
C
H
A
P T E R
1
Welcome to PowerShell
1.1  What is PowerShell?  5
1.2  Soul of a new language  9
1.3  Brushing up on objects  11
1.4  Up and running with PowerShell  13
1.5  Dude! Where’s my code?  22
1.6  Summary  35
Space is big. Really big! You just won’t believe how vastly hugely mind-bogglingly 
big it is. I mean you may think it’s a long way down the road to the chemist, but 
that’s just peanuts compared to space!
Don’t Panic.
—Douglas Adams, The Hitchhiker’s Guide to the Galaxy
Welcome to Windows PowerShell, the new command and scripting language from 
Microsoft. We begin this chapter with two quotes from The Hitchhiker’s Guide to the 
Galaxy. What do they have to do with a new scripting language? In essence, where a 
program solves a particular problem or problems, a programming language can solve 
any problem, at least in theory. That’s the “big, really big” part. The “Don’t Panic” bit 
is, well—don’t panic. Although PowerShell is new and different, it’s been designed to 
leverage what you already know, making it easy to learn. It’s also designed to allow 
you to learn it a bit at a time. Starting at the beginning, here’s the traditional “Hello 
world” program in PowerShell:
"Hello world."
C# PowerPoint - How to Process PowerPoint
pages simply with a few lines of C# code. C# Codes to Sort Slides Order. If you want to use a very easy PPT slide dealing solution to sort and rearrange
how to reorder pages in a pdf document; how to rearrange pages in pdf using reader
VB.NET Word: How to Process MS Word in VB.NET Library in .NET
well programmed Word pages sorter to rearrange Word pages in extracting single or multiple Word pages at one & profession imaging controls, PDF document, image
how to reorder pdf pages; how to move pages around in a pdf document
4
CHAPTER 1
W
ELCOME
TO
P
OWER
S
HELL
As you can see, no panic needed. But “Hello world” by itself isn’t very interesting. 
Here’s something a bit more complicated:
dir $env:windir\*.log | Select-String -List error | 
Format-Table path,linenumber –AutoSize
Although this is more complex, you can probably still figure out what it does. It 
searches all the log files in the Windows directory, looking for the string “error”, and 
then prints the full name of the matching file and the matching line number. “Useful, 
but not very special,” you might think, because you can easily do this using 
cmd.exe 
on Windows or bash on 
UNIX
. So what about the “big, really big” thing? Well, how 
about this example?
([xml](New-Object net.webclient).DownloadString( 
"http://blogs.msdn.com/powershell/rss.aspx" 
)).rss.channel.item | Format-Table title,link
Now we’re getting somewhere. This script downloads the 
RSS
feed from the Power-
Shell team blog and then displays the title and a link for each blog entry. 
NOTE
RSS
stands for Really Simple Syndication. This is a mechanism 
that allows programs to download blogs automatically so they can be 
read more conveniently than in the browser.
By the way, you weren’t expected to figure out this example yet. If you did, you can 
move to the head of the class!
Finally, one last example:
[void][reflection.assembly]::LoadWithPartialName(
"System.Windows.Forms") 
$form = New-Object Windows.Forms.Form  
$form.Text = "My First Form" 
$button = New-Object Windows.Forms.Button 
$button.text="Push Me!" 
$button.Dock="fill" 
$button.add_click({$form.close()}) 
$form.controls.add($button) 
$form.Add_Shown({$form.Activate()}) 
$form.ShowDialog()
This script uses the Windows Forms library (Win-
Forms) to build a graphical user interface 
(GUI) 
that has a single button displaying the text “Push 
Me!” The window this script creates is shown in 
figure 1.1.
Figure 1.1 When you run the code from the example, 
this window will be displayed. If you don’t see it, it may 
be hidden behind another window.
VB.NET PowerPoint: Sort and Reorder PowerPoint Slides by Using VB.
page will teach you to rearrange and readjust amount of robust PPT slides/pages editing methods and powerful & profession imaging controls, PDF document, image
change pdf page order preview; move pages in pdf file
Process Images in Web Image Viewer | Online Tutorials
used document types are supported, including PDF, multi-page easy to process image and file pages with the deleting a thumbnail, and you can rearrange the file
change pdf page order; change page order pdf preview
W
HAT
IS
P
OWER
S
HELL
?
5
When you click the button, it closes the form and exits the script. With this you go 
from 
"Hello world"
to a 
GUI
application in less than two pages. 
Now let’s come back down to Earth for a minute. The intent of chapter 1 is to set 
the  stage for understanding PowerShell—what it  is, what  it isn’t, and, almost  as 
important, why the PowerShell team made the decisions they made in designing the 
PowerShell language. Chapter 1 covers the goals of the project, along with some of 
the major issues the team faced in trying to achieve those goals. By the end of the 
chapter you should have a solid base from which to start learning and using Power-
Shell to solve real-world problems. All theory and no practice is boring, so the chap-
ter concludes with a number of small examples to give you a feel for PowerShell. But 
first,  a  philosophical  digression:  while  under  development, from  2002  until  just 
before the first public release in 2006, the codename for this project was Monad. The 
name Monad comes from The Monadology by Gottfried Wilhelm Leibniz, one of the 
inventors of calculus. Here’s how Leibniz defined the Monad:
The Monad, of which we shall here speak, is nothing but a simple substance, 
which enters into compounds. By “simple” is meant “without parts.”
—From The Monadology by Gottfried Wilhelm Leibniz (translated
by Robert Latta)
In The Monadology, Leibniz described a world of irreducible components from which 
all things could be composed. This captures the spirit of the project: to create a tool-
kit of simple pieces that you compose to create complex solutions. 
1.1
W
HAT
IS
P
OWER
S
HELL
?
What is PowerShell, and why was it created? PowerShell is the new command-line/ 
scripting environment from Microsoft. The overall goal for this project was to provide 
the best shell scripting environment possible for Microsoft Windows. This statement 
has two parts, and they’re equally important, because the goal wasn’t just to produce a 
good generic shell environment but rather to produce one designed specifically for the 
Windows environment. Although drawing heavily from existing command-line shell 
and scripting languages, the PowerShell language and runtime were designed from 
scratch to be an optimal environment for the modern Windows operating system.
Historically, the Windows command line has been weak. This is mainly the result 
of Microsoft’s early focus on computing for the average user, who is considered nei-
ther particularly technical nor particularly interested in computers. Most of the devel-
opment effort for Windows was put into improving the graphical environment for 
the nontechnical user, rather than creating an environment for the computer profes-
sional. Although this was certainly an enormously successful commercial strategy for 
Microsoft, it has left some segments of the community underserved.
6
CHAPTER 1
W
ELCOME
TO
P
OWER
S
HELL
In the next couple of sections, I’ll go over some of the other environmental forces 
that led to the creation of PowerShell. By environmental forces, I mean the various 
business pressures and practical requirements that needed to be satisfied. But first 
let’s refine our definitions of shell and scripting.
1.1.1
Shells, command lines, and scripting languages
In the previous section, I called PowerShell a command-line shell. You may be asking, 
what’s a shell? And how is that different from a command interpreter? What about 
scripting languages? If you can script in a shell language, doesn’t that make it a script-
ing language? In answering these questions, let’s start with shells. 
Defining what a shell is can be a bit tricky, especially at Microsoft, because pretty 
much everything at Microsoft has something called a shell. Windows Explorer is a 
shell. Visual Studio has a component called the shell. Heck, even the Xbox has some-
thing they call a shell. 
Historically, the term shell describes the piece of software that sits over an operating 
system’s core functionality. This core functionality is known as the operating system ker-
nel (shell…kernel…get it?). A shell is the piece of software that lets you access the func-
tionality provided by the operating system. Windows Explorer is properly called a shell 
because it lets you access the functionality of a Windows system. For our purposes, 
though, we’re more interested in the traditional text-based environment where the user 
types a command and receives a response. In other words, a shell is a command-line 
interpreter. The two terms can be used for the most part interchangeably.
Scripting languages vs. shells
If this is the case, then what is scripting and why are scripting languages not shells? To 
some extent, there’s no difference. Many scripting languages have a mode in which 
they take  commands  from  the user and  then execute those commands to return 
results. This mode of operation is called a Read-Evaluate-Print loop, or 
REPL
. Not all 
scripting languages have these interactive loops, but many do. In what way is a script-
ing language with a Read-Evaluate-Print loop not a shell? The difference is mainly in 
the user experience. A proper command-line shell is also a proper user interface. As 
such, a command line has to provide a number of features to make the user’s experi-
ence  pleasant  and  customizable.  The  features  that  improve  the  user’s  experience 
include aliases (shortcuts for hard-to-type  commands), wildcard  matching so you 
don’t have to type out full names, and the ability to start other programs without hav-
ing to do anything special such as calling a function to start the program. Finally, 
command-line shells provide mechanisms for examining, editing, and re-executing 
previously typed commands. These mechanisms are called command history.
If scripting languages can be shells, can shells be scripting languages? The answer 
is, emphatically, yes. With each generation, the 
UNIX
shell languages have grown 
increasingly powerful. It’s entirely possible to write substantial applications in a mod-
ern shell language, such as bash or zsh. Scripting languages characteristically have an
W
HAT
IS
P
OWER
S
HELL
?
7
advantage over shell languages, in that they provide mechanisms to help you develop 
larger scripts by letting you break a script into components, or modules. Scripting lan-
guages typically provide more sophisticated features for debugging your scripts. Next, 
scripting language runtimes are implemented in a way that makes their code execu-
tion more efficient, so that scripts written in these languages execute more quickly 
than they would in the corresponding shell script runtime. Finally, scripting language 
syntax is oriented more toward writing an application than toward interactively issu-
ing commands.
In the end, there’s no hard-and-fast distinction between a shell language and a 
scripting language. Some of the features that make a good scripting language result in 
a poor shell user experience. Conversely, some of the features that make for a good 
interactive shell experience can interfere with scripting. Because PowerShell’s goal is 
to be both a good scripting language and a good interactive shell, balancing the trade-
offs between user experience and scripting authoring was one of the major language 
design challenges. 
1.1.2
Why a new shell? Why now?
In the early 2000s, Microsoft commissioned a study to identify areas where it could 
improve its offerings in the server space. Server management, and particularly com-
mand-line management of Windows systems, was called out as a critical area for 
improvement. Some might say that this is like discovering that water is wet, but the 
important point is that people cared about the problem. When the survey team com-
pared the command-line manageability  of a Windows  system to a 
UNIX
system, 
Windows was found to be limited, and this was a genuine pain point with customers.
There are a couple of reasons for the historically weak Windows command line. 
First, as mentioned previously, limited effort had been put into improving the com-
mand line. The average desktop user doesn’t care about the command line, so it 
wasn’t considered important. Second, when writing 
GUI
s, you need to access what-
ever  you’re  managing  through  programmer-style  interfaces  called application pro-
gramming  interfaces  (
API
s).  APIs  are  almost  universally  binary  (especially  on 
Windows), and binary interfaces aren’t command-line friendly.
Managing Windows through objects
Another  factor  that  drove  the  need  for a  new  shell  model  is  that,  as  Windows 
acquired more and more subsystems and features, the number of issues we had to 
think about when managing a system increased dramatically. To help us deal with this 
increase in complexity, the manageable elements were factored into structured data 
objects. This collection of management objects is known internally at Microsoft as the 
Windows management surface. 
NOTE
Microsoft wasn’t the only company that was running into issues 
due to increased complexity. Pretty much everyone in the industry was
8
CHAPTER 1
W
ELCOME
TO
P
OWER
S
HELL
having this problem. This led to the Distributed Management Task 
Force (dmtf.org), an industry organization, creating a standard for man-
agement objects called the Common Information Model 
(CIM)
. Micro-
soft’s  implementation  of  this  standard  is  called  the  Windows 
Management Instrumentation 
(WMI)
. Chapter 19 covers PowerShell’s 
support for 
WMI
Although this factoring addressed overall complexity and worked well for graphical 
interfaces, it made it much harder to work with using a traditional text-based shell 
environment. 
Finally, as the power of the 
PC
increased, Windows began to move off the desktop 
and into the corporate datacenter. In the corporate datacenter, we had a large number 
of servers to manage, and the graphical point-and-click management approach that 
worked well for one machine didn’t scale. All these elements combined to make it 
clear that Microsoft could no longer ignore the command line. 
1.1.3
The last mile problem
Why should you care about command-line management and automation? Because it 
helps to solve the 
IT
professional’s version of the last mile problem. The last mile prob-
lem is a classical problem that comes from the telecommunications industry. It goes 
like this: The telecom industry can effectively amortize its infrastructure costs across 
all its customers until it gets to the last mile, where the service is finally run to an 
individual location. Installing service across this last mile can’t be amortized because it 
serves only a single location. Also, what’s involved in servicing any particular location 
can vary significantly. Servicing a rural farmhouse is different and significantly more 
expensive than running service to a house on a city street.
In the 
IT
industry, the last mile problem is figuring out how to manage each 
IT 
installation effectively and economically. Even a small 
IT
environment has a wide 
variety of equipment and applications. One approach to solving this is through con-
sulting: 
IT
vendors provide consultants who build custom last mile solutions for each 
end user. This, of course, has problems with recurring costs and scalability (it’s great 
for the vendor, though). A better solution for end users is to empower them to solve 
their own last mile problems. We do this by providing a toolkit to enable end users to 
build their own custom solutions. This toolkit can’t merely be the same tools used to 
build the overall infrastructure—the level of detail required is too great. Instead, we 
need a set of tools with a higher level of abstraction. This is where PowerShell comes 
in—its higher-level abstractions allow us to connect the various bits of your 
IT
envi-
ronment together more quickly and with less effort.
Now that you grasp the environmental forces that led to the creation of Power-
Shell—the need for command-line automation in a distributed object-based operat-
ing environment—let’s look at the form the solution took. 
S
OUL
OF
A
NEW
LANGUAGE
9
1.2
S
OUL
OF
A
NEW
LANGUAGE
The title of this section was adapted from Tracey Kidder’s Soul of a New Machine, one 
of the best nontechnical technical books ever written. Kidder’s book described how 
Data General developed a new 32-bit minicomputer, the Eclipse, in a single year. At 
that  time,  32-bit minicomputers  weren’t  just  new  computers;  they  represented  a 
whole new class of computers. It was a bold, ambitious project; many considered it 
crazy. Likewise, the PowerShell project wasn’t just about creating a new shell lan-
guage. It required developing a new class of object-based shell languages—and we 
were told more than a few times that we were crazy. 
In this section, I’ll cover some of the technological forces that shaped the develop-
ment of PowerShell. 
1.2.1
Learning from history
In section 1.1.2, I described why Microsoft needed to improve the command line. 
Now let’s talk about how the company decided to improve it. In particular, let’s talk 
about why Microsoft created a new language. This is certainly one of the most com-
mon questions people ask about PowerShell (right after “What, are you guys nuts?”). 
People ask, “Why not just use one of the 
UNIX
shells?” or “Why not extend the exist-
ing Windows command line?” 
In practice, the team did start with an existing shell language. The original Power-
Shell grammar was based on the shell grammar for the 
POSIX
standard shell defined 
in 
IEEE S
pecification 1003.2. The 
POSIX
shell is a mature command-line environ-
ment available on a huge variety of platforms, including Microsoft Windows. It’s 
based on a subset of the 
UNIX
Korn shell, which is itself a superset of the original 
Bourne shell. Starting with the 
POSIX
shell gave Microsoft a well-specified and stable 
base. Then we had to consider how to accommodate the differences that properly 
supporting the Windows environment would entail. The PowerShell team wanted to 
have a shell optimized for the Windows environment in the same way that the 
UNIX 
shells are optimized for this 
UNIX
environment.
To begin with, traditional shells deal only with strings. Even numeric operations 
work by turning a string into a number, performing the operation, and then turning 
it back into a string. Given that a core goal for PowerShell was to preserve the struc-
ture of the Windows data types, the PowerShell team couldn’t simply use the 
POSIX 
shell language as is. This factor impacted the language design more than any other. 
Next, the team wanted to support a more conventional scripting experience where, 
for example, expressions could be used as you’d normally use them in a scripting lan-
guage such as 
VBS
cript, Perl, or Python. With a more natural expression syntax, it 
would be easier to work with the Windows management objects. Now the team just 
had to decide how to make those objects available to the shell.
Documents you may be interested
Documents you may be interested