Windows PowerShell Step by Step 3rd Edition Wilson
Windows PowerShell Step by Step 3rd Edition Wilson
Windows PowerShell Step by Step 3rd Edition Wilson
Windows PowerShell Step by Step 3rd Edition Wilson
Windows PowerShell Step by Step 3rd Edition Wilson
1.
Windows PowerShell Stepby Step 3rd Edition
Wilson install download
https://ebookmeta.com/product/windows-powershell-step-by-
step-3rd-edition-wilson/
Download more ebook from https://ebookmeta.com
2.
We believe theseproducts will be a great fit for you. Click
the link to download now, or visit ebookmeta.com
to discover even more!
Using Publisher 2019: The Step-by-step Guide to Using
Microsoft Publisher 2019 1st Edition Kevin Wilson
https://ebookmeta.com/product/using-publisher-2019-the-step-by-
step-guide-to-using-microsoft-publisher-2019-1st-edition-kevin-
wilson/
Easy German Step-by-Step. Ed Swick
https://ebookmeta.com/product/easy-german-step-by-step-ed-swick/
Clinical Guide to Oral Implantology Step by Step
Procedures 3rd Edition Porus S Turner
https://ebookmeta.com/product/clinical-guide-to-oral-
implantology-step-by-step-procedures-3rd-edition-porus-s-turner/
The Frozen River 1st Edition Ariel Lawhon
https://ebookmeta.com/product/the-frozen-river-1st-edition-ariel-
lawhon/
3.
The Cowboy sTexas Rose The Dixons of Legacy Ranch 1
1st Edition E. Elizabeth Watson
https://ebookmeta.com/product/the-cowboy-s-texas-rose-the-dixons-
of-legacy-ranch-1-1st-edition-e-elizabeth-watson/
Traditions Redirecting Contemporary Indonesian Cultural
Productions 1st Edition Jan Van Der Putten
https://ebookmeta.com/product/traditions-redirecting-
contemporary-indonesian-cultural-productions-1st-edition-jan-van-
der-putten/
Researching Medical Education 2nd Edition Edited By
Jennifer Cleland
https://ebookmeta.com/product/researching-medical-education-2nd-
edition-edited-by-jennifer-cleland/
The Hank Show: How a House-Painting, Drug-Running DEA
Informant Built the Machine That Rules Our Lives. 1st
Edition Mckenzie Funk.
https://ebookmeta.com/product/the-hank-show-how-a-house-painting-
drug-running-dea-informant-built-the-machine-that-rules-our-
lives-1st-edition-mckenzie-funk/
The Economist Guide to Financial Management 3rd Edition
Understand and improve the bottom line John Tennent
https://ebookmeta.com/product/the-economist-guide-to-financial-
management-3rd-edition-understand-and-improve-the-bottom-line-
john-tennent/
4.
Strategic Risk ManagementNew Tools for Competitive
Advantage in an Uncertain Age Kristina Narvaez John
Bugalla Emanuel Lauria Paul C Godfrey
https://ebookmeta.com/product/strategic-risk-management-new-
tools-for-competitive-advantage-in-an-uncertain-age-kristina-
narvaez-john-bugalla-emanuel-lauria-paul-c-godfrey/
Contents at aglance
Introduction
CHAPTER 1 Overview of Windows PowerShell 5.0
CHAPTER 2 Using Windows PowerShell cmdlets
CHAPTER 3 Understanding and using Windows PowerShell providers
CHAPTER 4 Using Windows PowerShell remoting and jobs
CHAPTER 5 Using Windows PowerShell scripts
CHAPTER 6 Working with functions
CHAPTER 7 Creating advanced functions and modules
CHAPTER 8 Using the Windows PowerShell ISE
CHAPTER 9 Working with Windows PowerShell profiles
CHAPTER 10 Using WMI
CHAPTER 11 Querying WMI
CHAPTER 12 Remoting WMI
CHAPTER 13 Calling WMI methods on WMI classes
CHAPTER 14 Using the CIM cmdlets
CHAPTER 15 Working with Active Directory
CHAPTER 16 Working with the AD DS module
CHAPTER 17 Deploying Active Directory by using Windows PowerShell
CHAPTER 18 Debugging scripts
CHAPTER 19 Handling errors
CHAPTER 20 Using the Windows PowerShell workflow
11.
CHAPTER 21 ManagingWindows PowerShell DSC
CHAPTER 22 Using the PowerShell Gallery
Appendix A: Windows PowerShell scripting best practices
Appendix B: Regular expressions quick reference
Index
12.
Contents
Introduction
Chapter 1 Overviewof Windows PowerShell 5.0
Understanding Windows PowerShell
Using cmdlets
Installing Windows PowerShell
Deploying Windows PowerShell to down-level operating systems
Using command-line utilities
Security issues with Windows PowerShell
Controlling execution of Windows PowerShell cmdlets
Confirming actions
Suspending confirmation of cmdlets
Working with Windows PowerShell
Accessing Windows PowerShell
Configuring the Windows PowerShell console
Supplying options for cmdlets
Working with the help options
Exploring commands: Step-by-step exercises
Chapter 1 quick reference
Chapter 2 Using Windows PowerShell cmdlets
Understanding the basics of cmdlets
Using the Get-ChildItem cmdlet
Obtaining a directory listing
Formatting a directory listing by using the Format-List cmdlet
Using the Format-Wide cmdlet
Formatting a directory listing by using Format-Table
13.
Formatting output withOut-GridView
Taking advantage of the power of Get-Command
Searching for cmdlets by using wildcard characters
Using the Get-Member cmdlet
Using the Get-Member cmdlet to examine properties and methods
Using the New-Object cmdlet
Creating and using the wshShell object
Using the Show-Command cmdlet
Windows PowerShell cmdlet naming helps you learn
Windows PowerShell verb grouping
Windows PowerShell verb distribution
Creating a Windows PowerShell profile
Working with cmdlets: Step-by-step exercises
Chapter 2 quick reference
Chapter 3 Understanding and using Windows PowerShell providers
Understanding Windows PowerShell providers
Understanding the alias provider
Understanding the certificate provider
Understanding the environment provider
Understanding the filesystem provider
Understanding the function provider
Using the registry provider to manage the Windows registry
The two registry drives
The short way to create a new registry key
Dealing with a missing registry property
Understanding the variable provider
Exploring Windows PowerShell providers: Step-by-step exercises
14.
Chapter 3 quickreference
Chapter 4 Using Windows PowerShell remoting and jobs
Understanding Windows PowerShell remoting
Classic remoting
WinRM
Using Windows PowerShell jobs
Using Windows PowerShell remoting and jobs: Step-by-step exercises
Chapter 4 quick reference
Chapter 5 Using Windows PowerShell scripts
Why write Windows PowerShell scripts?
The fundamentals of scripting
Running Windows PowerShell scripts
Turning on Windows PowerShell scripting support
Transitioning from command line to script
Manually running Windows PowerShell scripts
Understanding variables and constants
Using the While statement
Constructing the While statement in Windows PowerShell
A practical example of using the While statement
Using special features of Windows PowerShell
Using the Do...While statement
Using the range operator
Operating over an array
Casting to ASCII values
Using the Do...Until statement
Comparing the Windows PowerShell Do...Until statement with VBScript
Using the Windows PowerShell Do statement
15.
The For statement
Usingthe For statement
Using the Foreach statement
Exiting the Foreach statement early
Using the If statement
Using assignment and comparison operators
Evaluating multiple conditions
The Switch statement
Using the Switch statement
Controlling matching behavior
Creating multiple folders: Step-by-step exercises
Chapter 5 quick reference
Chapter 6 Working with functions
Understanding functions
Using functions to provide ease of code reuse
Including functions in the Windows PowerShell environment
Using dot-sourcing
Using dot-sourced functions
Adding help for functions
Using a here-string object for help
Using two input parameters
Using a type constraint in a function
Using more than two input parameters
Using functions to encapsulate business logic
Using functions to provide ease of modification
Understanding filters
Creating a function: Step-by-step exercises
16.
Chapter 6 quickreference
Chapter 7 Creating advanced functions and modules
The [cmdletbinding] attribute
Easy verbose messages
Automatic parameter checks
Adding support for the -WhatIf switch parameter
Adding support for the -Confirm switch parameter
Specifying the default parameter set
The Parameter attribute
The Mandatory parameter property
The Position parameter property
The ParameterSetName parameter property
The ValueFromPipeline property
The HelpMessage property
Understanding modules
Locating and loading modules
Installing modules
Creating a module
Creating an advanced function and installing a module: Step-by-step
exercises
Chapter 7 quick reference
Chapter 8 Using the Windows PowerShell ISE
Running the Windows PowerShell ISE
Navigating the Windows PowerShell ISE
Working with the script pane
Using tab expansion and IntelliSense
Working with Windows PowerShell ISE snippets
17.
Using Windows PowerShellISE snippets to create code
Creating new Windows PowerShell ISE snippets
Removing user-defined Windows PowerShell ISE snippets
Using the Commands add-on and snippets: Step-by-step exercises
Chapter 8 quick reference
Chapter 9 Working with Windows PowerShell profiles
Six different Windows PowerShell profiles
Understanding the six Windows PowerShell profiles
Examining the $profile variable
Determining whether a specific profile exists
Creating a new profile
Design considerations for profiles
Using one or more profiles
Using the All Users, All Hosts profile
Using your own file
Grouping similar functionality into a module
Where to store the profile module
Creating and adding functionality to a profile: Step-by-step exercises
Chapter 9 quick reference
Chapter 10 Using WMI
Understanding the WMI model
Working with objects and namespaces
Listing WMI providers
Working with WMI classes
Querying WMI
Obtaining service information: Step-by-step exercises
Chapter 10 quick reference
18.
Chapter 11 QueryingWMI
Alternate ways to connect to WMI
Returning selective data from all instances
Selecting multiple properties
Choosing specific instances
Using an operator
Shortening the syntax
Working with software: Step-by-step exercises
Chapter 11 quick reference
Chapter 12 Remoting WMI
Using WMI against remote systems
Supplying alternate credentials for the remote connection
Using Windows PowerShell remoting to run WMI
Using CIM classes to query WMI classes
Working with remote results
Reducing data via Windows PowerShell parameters
Reducing data via WQL query
Running WMI jobs
Using Windows PowerShell remoting and WMI: Step-by-step exercises
Chapter 12 quick reference
Chapter 13 Calling WMI methods on WMI classes
Using WMI cmdlets to execute instance methods
Using the Terminate method directly
Using the Invoke-WmiMethod cmdlet
Using the [wmi] type accelerator
Using WMI cmdlets to work with static methods
Executing instance methods: Step-by-step exercises
19.
Chapter 13 quickreference
Chapter 14 Using the CIM cmdlets
Using the CIM cmdlets to explore WMI classes
Using the Get-CimClass cmdlet and the -ClassName parameter
Finding WMI class methods
Filtering classes by qualifier
Retrieving WMI instances
Reducing returned properties and instances
Cleaning up output from the command
Working with associations
Retrieving WMI instances: Step-by-step exercises
Chapter 14 quick reference
Chapter 15 Working with Active Directory
Creating objects in Active Directory
Creating an OU
ADSI providers
LDAP names
Creating users
What is user account control?
Working with users
Creating multiple OUs: Step-by-step exercises
Chapter 15 quick reference
Chapter 16 Working with the AD DS module
Understanding the Active Directory module
Installing the Active Directory module
Getting started with the Active Directory module
20.
Using the ActiveDirectory module
Finding the FSMO role holders
Discovering Active Directory
Renaming Active Directory sites
Managing users
Creating a user
Finding and unlocking Active Directory user accounts
Finding disabled users
Finding unused user accounts
Updating Active Directory objects: Step-by-step exercises
Chapter 16 quick reference
Chapter 17 Deploying Active Directory by using Windows PowerShell
Using the Active Directory module to deploy a new forest
Adding a new domain controller to an existing domain
Adding a read-only domain controller
Installing domain controller prerequisites and adding to a forest: Step-by-
step exercises
Chapter 17 quick reference
Chapter 18 Debugging scripts
Understanding debugging in Windows PowerShell
Understanding the three different types of errors
Using the Set-PSDebug cmdlet
Tracing the script
Stepping through the script
Enabling strict mode
Debugging the script
Setting breakpoints
21.
Setting a breakpointon a line number
Setting a breakpoint on a variable
Setting a breakpoint on a command
Responding to breakpoints
Listing breakpoints
Enabling and disabling breakpoints
Deleting breakpoints
Debugging a function: Step-by-step exercises
Chapter 18 quick reference
Chapter 19 Handling errors
Handling missing parameters
Creating a default value for a parameter
Making the parameter mandatory
Limiting choices
Using PromptForChoice to limit selections
Using Test-Connection to identify computer connectivity
Using the -contains operator to examine the contents of an array
Using the -contains operator to test for properties
Handling missing rights
Using an attempt-and-fail approach
Checking for rights and exiting gracefully
Handling missing WMI providers
Handling incorrect data types
Handling out-of-bounds errors
Using a boundary-checking function
Placing limits on the parameter
Using Try...Catch...Finally
22.
Catching multiple errors
UsingPromptForChoice to limit selections and using Try...Catch...Finally:
Step-by-step exercises
Chapter 19 quick reference
Chapter 20 Using the Windows PowerShell workflow
Why use workflows?
Workflow requirements
A simple workflow
Parallel PowerShell
Workflow activities
Windows PowerShell cmdlets as activities
Disallowed core cmdlets
Non-automatic cmdlet activities
Parallel activities
Checkpointing Windows PowerShell workflow
Understanding checkpoints
Placing checkpoints
Adding checkpoints
Adding a sequence activity to a workflow
Creating a workflow and adding checkpoints: Step-by-step exercises
Chapter 20 quick reference
Chapter 21 Managing Windows PowerShell DSC
Understanding Desired State Configuration
The DSC process
Configuration parameters
Setting dependencies
Controlling configuration drift
23.
Modifying environment variables
Creatinga DSC configuration and adding a dependency: Step-by-step
exercises
Chapter 21 quick reference
Chapter 22 Using the PowerShell Gallery
Exploring the PowerShell Gallery
Configuring and using PowerShell Get
Installing a module from the PowerShell Gallery
Configuring trusted installation locations
Uninstalling a module
Searching for and installing modules from the PowerShell Gallery: Step-by-
step exercises
Chapter 22 quick reference
Appendix A: Windows PowerShell scripting best practices
Appendix B: Regular expressions quick reference
Index
About the author
What do you think of this book? We want to hear from you!
Microsoft is interested in hearing your feedback so we can improve our
books and learning resources for you. To participate in a brief survey,
please visit:
http://aka.ms/tellpress
24.
Introduction
Windows PowerShell isthe de facto management standard for Windows
administrators. As part of the Microsoft Engineering Common Criteria,
Windows PowerShell management hooks are built into all server-based
products, including Microsoft SQL Server, Exchange, System Center, and
SharePoint. Knowledge of, and even expertise in, this technology is no longer
“nice to know”—it is essential, and it often appears as a required skill set in
open job notices. Windows PowerShell Step by Step, Third Edition, offers a solid
footing for the IT pro trying to come up to speed on this essential management
technology.
Who should read this book
This book exists to help IT pros come up to speed quickly on the exciting
Windows PowerShell 5.0 technology. Windows PowerShell Step by Step, Third
Edition is specifically aimed at several audiences, including:
Windows networking consultants Anyone who wants to standardize
and to automate the installation and configuration of Microsoft .NET
networking components.
Windows network administrators Anyone who wants to automate the
day-to-day management of Windows or .NET networks.
Microsoft Certified Solutions Experts (MCSEs) and Microsoft
Certified Trainers (MCTs) Windows PowerShell is a key component of
many Microsoft courses and certification exams.
General technical staff Anyone who wants to collect information or
configure settings on Windows machines.
Power users Anyone who wants to obtain maximum power and
configurability of their Windows machines, either at home or in an
unmanaged desktop workplace environment.
Assumptions
25.
Assumptions
This book expectsthat you are familiar with the Windows operating system;
therefore, basic networking terms are not explained in detail. The book does not
expect you to have any background in programming, development, or
scripting. All elements related to these topics, as they arise, are fully explained.
This book might not be for you if...
Not every book is aimed at every possible audience. This is not a Windows
PowerShell 5.0 reference book; therefore, extremely deep, esoteric topics are
not covered. Although some advanced topics are covered, in general the
discussion starts with beginner topics and proceeds through an intermediate
depth. If you have never seen a computer and have no idea what a keyboard or
a mouse is, this book definitely is not for you.
Organization of this book
This book can be divided into three parts. The first part explores the Windows
PowerShell command line. The second discusses Windows PowerShell scripting.
The third part covers more advanced Windows PowerShell techniques, in
addition to the use of Windows PowerShell in various management scenarios.
This three-part structure is somewhat artificial and is not actually delimitated by
“part” pages, but it is a useful way to approach a rather long book.
A better way to approach the book would be to think of it as a big sampler
box of chocolates. Each chapter introduces new experiences, techniques, and
skills. Though the book is not intended to be an advanced-level book on
computer programming, it is intended to provide a foundation that you could
use to progress to advanced levels of training if you find an area that you see as
especially suited to your needs. So if you fall in love with Windows PowerShell
Desired State Configuration, remember that Chapter 21, “Managing Windows
PowerShell DSC,” is only a sample of what you can do with this technology.
Indeed, some Windows PowerShell MVPs are almost completely focused on this
one aspect of Windows PowerShell.
Finding your best starting point in this book
26.
Finding your beststarting point in this book
The different sections of Windows PowerShell Step by Step, Third Edition, cover
a wide range of technologies. Depending on your needs and your existing
understanding of Microsoft tools, you might want to focus on specific areas of
the book. Use the following table to determine how best to proceed through
the book.
All of the book’s chapters include two hands-on labs that let you try out the
concepts just learned.
System requirements
You will need the following hardware and software to complete the practice
exercises in this book:
Windows 10, Windows 7, Windows Server 2012 R2, Windows Server 2012,
Windows Server 2008 R2, or Windows Server 2008 with Service Pack 2.
Computer that has a 1.6 GHz or faster processor (2 GHz recommended)
1 GB (32-bit) or 2 GB (64-bit) RAM
3.5 GB of available hard disk space
5400 RPM hard disk drive
DirectX 9 capable video card running at 1024 x 768 or higher-resolution
display
Internet connection to download software or chapter examples
27.
Depending on yourWindows configuration, you might require Local
Administrator rights to run certain commands.
Downloads: Scripts
Most of the chapters in this book include exercises that let you interactively try
out new material learned in the main text. All sample scripts can be downloaded
from the following page:
http://aka.ms/PS3E/files
Follow the instructions to download the PS3E_675117_Scripts.zip file.
Installing the scripts
Follow these steps to install the scripts on your computer so that you can use
them with the exercises in this book.
1. Unzip the PS3E_675117_Scripts.zip file that you downloaded from the
book’s website.
2. If prompted, review the displayed end user license agreement. If you
accept the terms, select the accept option, and then click Next.
Using the scripts
The folders created by unzipping the file are named for each chapter from the
book that contains scripts.
Acknowledgments
28.
Acknowledgments
I’d like tothank the following people: my editors Kathy Krause and Jaime Odell
from OTSI, for turning the book into something resembling English and steering
me through the numerous Microsoft stylisms; my technical reviewer and good
friend Brian Wilhite, Microsoft PFE, whose attention to detail kept me from
looking foolish; Jason Walker from Microsoft Consulting Services, and Gary
Siepser and Ashley McGlone, both from Microsoft PFE, who reviewed my
outline and made numerous suggestions with regard to completeness. Lastly, I
want to acknowledge my wife, Teresa Wilson, Windows PowerShell MVP (aka the
Scripting Wife), who read every page and made numerous suggestions that will
be of great benefit to beginning scripters.
Errata, updates, & book support
We’ve made every effort to ensure the accuracy of this book and its companion
content. You can access updates to this book—in the form of a list of submitted
errata and their related corrections—at:
http://aka.ms/PS3E/errata
If you discover an error that is not already listed, please submit it to us at the
same page.
If you need additional support, email Microsoft Press Book Support at:
[email protected]
Please note that product support for Microsoft software and hardware is not
offered through the previous addresses. For help with Microsoft software or
hardware, go to:
http://support.microsoft.com
Free ebooks from Microsoft Press
From technical overviews to in-depth information on special topics, the free
ebooks from Microsoft Press cover a wide range of topics. These ebooks are
available in PDF, EPUB, and Mobi for Kindle formats, ready for you to download
at:
29.
http://aka.ms/mspressfree
Check back oftento see what is new!
We want to hear from you
At Microsoft Press, your satisfaction is our top priority, and your feedback our
most valuable asset. Please tell us what you think of this book at:
http://aka.ms/tellpress
We know you’re busy, so we’ve kept it short with just a few questions. Your
answers go directly to the editors at Microsoft Press. (No personal information
will be requested.) Thanks in advance for your input!
Stay in touch
Let’s keep the conversation going! We’re on Twitter:
http://twitter.com/MicrosoftPress.
30.
Chapter 1. Overviewof Windows PowerShell
5.0
After completing this chapter, you will be able to
Understand the basic use and capabilities of Windows PowerShell.
Install Windows PowerShell.
Use basic command-line utilities inside Windows PowerShell.
Use Windows PowerShell help.
Run basic Windows PowerShell cmdlets.
Get help on basic Windows PowerShell cmdlets.
The release of Windows PowerShell 5.0 continues to offer real power to the
Windows network administrator. Combining the power of a full-fledged
scripting language with access to command-line utilities, Windows
Management Instrumentation (WMI), and even Microsoft Visual Basic Scripting
Edition (VBScript), Windows PowerShell provides real power and ease. The
implementation of hundreds of cmdlets and advanced functions provides a rich
ecosystem that makes sophisticated changes as simple as a single line of easy-
to-read code. As part of the Microsoft Common Engineering Criteria, Windows
PowerShell is the management solution for the Windows platform.
Understanding Windows PowerShell
Perhaps the biggest obstacle for a Windows network administrator in migrating
to Windows PowerShell 5.0 is understanding what Windows PowerShell actually
is. In some respects, it is a replacement for the venerable CMD (command) shell.
In fact, on Windows Server–based computers running Server Core, it is possible
to replace the CMD shell with Windows PowerShell so that when the server
starts up, it uses Windows PowerShell as the interface.
As shown here, after Windows PowerShell launches, you can use cd to change
the working directory, and then use dir to produce a directory listing in exactly
the same way you would perform these tasks from the CMD shell.
31.
PS C:WindowsSystem32> cd
PSC:> dir
Directory: C:
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 7/10/2015 7:07 PM FSO
d----- 7/9/2015 5:24 AM PerfLogs
d-r--- 7/9/2015 6:59 AM Program Files
d-r--- 7/10/2015 7:27 PM Program Files (x86)
d-r--- 7/10/2015 7:18 PM Users
d----- 7/10/2015 6:00 PM Windows
PS C:>
You can also combine traditional CMD interpreter commands with other
utilities, such as fsutil. This is shown here.
PS C:> md c:test
Directory: C:
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 7/11/2015 11:14 AM test
PS C:> fsutil file createnew c:testmyfile.txt 1000
File c:testmyfile.txt is created
PS C:> cd c:test
PS C:test> dir
Directory: C:test
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 7/11/2015 11:14 AM 1000 myfile.txt
PS C:test>
The preceding two examples show Windows PowerShell being used in an
interactive manner. Interactivity is one of the primary features of Windows
PowerShell, and you can begin to use Windows PowerShell interactively by
32.
opening a WindowsPowerShell prompt and entering commands. You can enter
the commands one at a time, or you can group them together like a batch file. I
will discuss this later because you will need more information to understand it.
Using cmdlets
In addition to using Windows console applications and built-in commands, you
can also use the cmdlets (pronounced commandlets) that are built into Windows
PowerShell. Cmdlets can be created by anyone. The Windows PowerShell team
creates the core cmdlets, but many other teams at Microsoft were involved in
creating the hundreds of cmdlets that were included with Windows 10. They are
like executable programs, but they take advantage of the facilities built into
Windows PowerShell, and therefore are easy to write. They are not scripts, which
are uncompiled code, because they are built using the services of a special
Microsoft .NET Framework namespace. Windows PowerShell 5.0 comes with
about 1,300 cmdlets on Windows 10, and as additional features and roles are
added, so are additional cmdlets. These cmdlets are designed to assist the
network administrator or consultant to take advantage of the power of
Windows PowerShell without having to learn a scripting language. One of the
strengths of Windows PowerShell is that cmdlets use a standard naming
convention that follows a verb-noun pattern, such as Get-Help, Get-EventLog, or
Get-Process. The cmdlets that use the get verb display information about the
item on the right side of the dash. The cmdlets that use the set verb modify or
set information about the item on the right side of the dash. An example of a
cmdlet that uses the set verb is Set-Service, which can be used to change the
start mode of a service. All cmdlets use one of the standard verbs. To find all of
the standard verbs, you can use the Get-Verb cmdlet. In Windows PowerShell
5.0, there are nearly 100 approved verbs.
Installing Windows PowerShell
33.
Installing Windows PowerShell
WindowsPowerShell 5.0 comes with Windows 10 Client. You can download the
Windows Management Framework 5.0 package, which contains updated
versions of Windows Remote Management (WinRM), WMI, and Windows
PowerShell 5.0, from the Microsoft Download Center. Because Windows 10
comes with Windows PowerShell 5.0, there is no Windows Management
Framework 5.0 package available for download—it is not needed. In order to
install Windows Management Framework 5.0 on Windows 7, Windows 8.1,
Windows Server 2008 R2, Windows Server 2012, and Windows Server 2012 R2,
they all must be running the .NET Framework 4.5.
Deploying Windows PowerShell to down-level
operating systems
After Windows PowerShell is downloaded from
http://www.microsoft.com/downloads, you can deploy it to your enterprise by
using any of the standard methods.
Here are few of the methods that you can use to accomplish Windows
PowerShell deployment:
Create a Microsoft Systems Center Configuration Manager package and
advertise it to the appropriate organizational unit (OU) or collection.
Create a Group Policy Object (GPO) in Active Directory Domain Services
(AD DS) and link it to the appropriate OU.
Approve the update in Software Update Services (SUS), when available.
Add the Windows Management Framework 5.0 packages to a central file
share or webpage for self-service.
If you are not deploying to an entire enterprise, perhaps the easiest way to
install Windows PowerShell is to download the package and step through the
wizard.
34.
Note
To use acommand-line utility in Windows PowerShell, launch Windows
PowerShell by choosing Start | Run | PowerShell. At the Windows
PowerShell prompt, enter in the command to run.
Using command-line utilities
As mentioned earlier, command-line utilities can be used directly within
Windows PowerShell. The advantages of using command-line utilities in
Windows PowerShell, as opposed to simply running them in the CMD
interpreter, are the Windows PowerShell pipelining and formatting features.
Additionally, if you have batch files or CMD files that already use existing
command-line utilities, you can easily modify them to run within the Windows
PowerShell environment. The following procedure illustrates adding ipconfig
commands to a text file.
Running ipconfig commands
1. Start Windows PowerShell by choosing Start | Run | PowerShell. The
Windows PowerShell prompt opens by default at the root of your user
folder—for example, C:UsersEd.
2. Enter the command ipconfig /all. This is shown here.
PS C:> ipconfig /all
3. Pipeline the result of ipconfig /all to a text file. This is illustrated here.
PS C:> ipconfig /all >ipconfig.txt
4. Open Notepad to view the contents of the text file, as follows.
PS C:> notepad ipconfig.txt
Entering a single command into Windows PowerShell is useful, but at times
you might need more than one command to provide troubleshooting
information or configuration details to assist with setup issues or performance
35.
problems. This iswhere Windows PowerShell really shines. In the past, you
would have either had to write a batch file or enter the commands manually.
This is shown in the TroubleShoot.bat script that follows.
TroubleShoot.bat
ipconfig /all >C:tshoot.txt
route print >>C:tshoot.txt
hostname >>C:tshoot.txt
net statistics workstation >>C:tshoot.txt
Of course, if you entered the commands manually, you had to wait for each
command to complete before entering the subsequent command. In that case,
it was always possible to lose your place in the command sequence, or to have
to wait for the result of each command. Windows PowerShell eliminates this
problem. You can now enter multiple commands on a single line, and then leave
the computer or perform other tasks while the computer produces the output.
No batch file needs to be written to achieve this capability.
Tip
Use multiple commands on a single Windows PowerShell line. Enter each
complete command, and then use a semicolon to separate the
commands.
The following exercise describes how to run multiple commands.
Running multiple commands
1. Open Windows PowerShell by choosing Start | Run | PowerShell. The
Windows PowerShell prompt opens by default at the root of your user
folder.
2. Enter the ipconfig /all command. Pipeline the output to a text file called
Tshoot.txt by using the redirection arrow (>). This is the result.
ipconfig /all >tshoot.txt
3. On the same line, use a semicolon to separate the ipconfig /all command
36.
from the routeprint command. Append the output from the command to
a text file called Tshoot.txt by using the redirect-and-append arrow (>>).
Here is the command so far.
ipconfig /all >tshoot.txt; route print >>tshoot.txt
4. On the same line, use a semicolon to separate the route print command
from the hostname command. Append the output from the command to a
text file called Tshoot.txt by using the redirect-and-append arrow. The
command up to this point is shown here.
ipconfig /all >tshoot.txt; route print >>tshoot.txt; hostname >>tshoot
.txt
5. On the same line, use a semicolon to separate the hostname command
from the net statistics workstation command. Append the output from the
command to a text file called Tshoot.txt by using the redirect-and-append
arrow. The completed command looks like the following.
ipconfig /all >tshoot.txt; route print >>tshoot.txt; hostname >>tshoot
.txt; net statistics workstation >>tshoot.txt
Security issues with Windows PowerShell
As with any tool as versatile as Windows PowerShell, there are bound to be
some security concerns. Security, however, was one of the design goals in the
development of Windows PowerShell.
When you launch Windows PowerShell, it opens in the root of your user
folder; this ensures that you are in a directory where you will have permission to
perform certain actions and activities. This is far safer than opening at the root
of the drive, or even opening in system root.
The running of scripts is disabled by default and can be easily managed
through Group Policy. It can also be managed on a per-user or per-session basis.
Controlling execution of Windows PowerShell
37.
Controlling execution ofWindows PowerShell
cmdlets
Have you ever opened a CMD interpreter prompt, entered a command, and
pressed Enter so that you could find out what it does? What if that command
happened to be Format C:? Are you sure you want to format your C drive? This
section covers some parameters that can be supplied to cmdlets that allow you
to control the way they execute. Although not all cmdlets support these
parameters, most of those included with Windows PowerShell do. The three
switch parameters you can use to control execution are -WhatIf, -Confirm, and
suspend. Suspend is not really a switch parameter that is supplied to a cmdlet,
but rather is an action you can take at a confirmation prompt, and is therefore
another method of controlling execution.
Note
To use -WhatIf at a Windows PowerShell prompt, enter the cmdlet. Type
the -WhatIf switch parameter after the cmdlet. This only works for cmdlets
that change system state. Therefore, there is no -WhatIf parameter for
cmdlets like Get-Process that only display information.
Windows PowerShell cmdlets that change system state (such as Set-Service)
support a prototype mode that you can enter by using the -WhatIf switch
parameter. The developer decides to implement -WhatIf when developing the
cmdlet; however, the Windows PowerShell team recommends that developers
implement -WhatIf. The use of the -WhatIf switch parameter is shown in the
following procedure.
Using -WhatIf to prototype a command
1. Open Windows PowerShell by choosing Start | Run | PowerShell. The
Windows PowerShell prompt opens by default at the root of your user
folder.
38.
2. Start aninstance of Notepad.exe. Do this by entering notepad and
pressing the Enter key. This is shown here.
notepad
3. Identify the Notepad process you just started by using the Get-Process
cmdlet. Type enough of the process name to identify it, and then use a
wildcard asterisk (*) to avoid typing the entire name of the process, as
follows.
Get-Process note*
4. Examine the output from the Get-Process cmdlet, and identify the process
ID. The output on my machine is shown here. Note that, in all likelihood,
the process ID used by your instance of Notepad.exe will be different from
the one on my machine.
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
114 8 1544 8712 ...54 0.00 3756 notepad
5. Use -WhatIf to find out what would happen if you used Stop-Process to
stop the process ID you obtained in step 4. This process ID is found under
the Id column in your output. Use the -Id parameter to identify the
Notepad.exe process. The command is as follows.
Stop-Process -id 3756 -whatif
6. Examine the output from the command. It tells you that the command will
stop the Notepad process with the process ID that you used in your
command.
What if: Performing the operation "Stop-Process" on target "notepad
(3756)".
Confirming actions
As described in the previous section, you can use -WhatIf to prototype a cmdlet
in Windows PowerShell. This is useful for finding out what a cmdlet would do;
however, if you want to be prompted before the execution of the cmdlet, you
can use the -Confirm parameter.
39.
Confirming the executionof cmdlets
1. Open Windows PowerShell, start an instance of Notepad.exe, identify the
process, and examine the output, just as in steps 1 through 4 in the
previous exercise.
2. Use the -Confirm parameter to force a prompt when using the Stop-
Process cmdlet to stop the Notepad process identified by the Get-Process
note* command. This is shown here.
Stop-Process -id 3756 -confirm
The Stop-Process cmdlet, when used with the -Confirm parameter, displays
the following confirmation prompt.
Confirm
Are you sure you want to perform this action?
Performing operation "Stop-Process" on Target "notepad (3756)".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):
3. Enter y and press Enter. The Notepad.exe process ends. The Windows
PowerShell prompt returns to the default, ready for new commands, as
shown here.
PS C:>
Tip
To suspend cmdlet confirmation, at the confirmation prompt from the
cmdlet, enter s and press Enter.
Suspending confirmation of cmdlets
40.
Suspending confirmation ofcmdlets
The ability to prompt for confirmation of the execution of a cmdlet is extremely
useful and at times might be vital to assisting in maintaining a high level of
system uptime. There might be times when you enter a long command and then
remember that you need to check on something else first. For example, you
might be in the middle of stopping a number of processes, but you need to
view details on the processes to ensure that you do not stop the wrong one. For
such eventualities, you can tell the confirmation that you would like to suspend
execution of the command.
Suspending execution of a cmdlet
1. Open Windows PowerShell, start an instance of Notepad.exe, identify the
process, and examine the output, just as in steps 1 through 4 in the “Using
-WhatIf to prototype a command” exercise. The output on my machine is
shown following. Note that in all likelihood, the process ID used by your
instance of Notepad.exe will be different from the one on my machine.
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
39 2 944 400 29 0.05 3576 notepad
2. Use the -Confirm parameter to force a prompt when using the Stop-
Process cmdlet to stop the Notepad process identified by the Get-Process
note* command. This is illustrated here.
Stop-Process -id 3576 -confirm
The Stop-Process cmdlet, when used with the -Confirm parameter, displays
the following confirmation prompt.
Confirm
Are you sure you want to perform this action?
Performing operation "Stop-Process" on Target "notepad (3576)".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):
3. To suspend execution of the Stop-Process cmdlet, enter s. and then a
double-arrow prompt appears, as follows.
PS C:>>
41.
4. Use theGet-Process cmdlet to obtain a list of all the running processes
that begin with the letter n. The syntax is as follows.
Get-Process n*
On my machine, two processes appear, the Notepad process I launched
earlier and another process. This is shown here.
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
269 168 4076 2332 ...98 0.19 1632 NisSrv
114 8 1536 8732 ...54 0.02 3576 notepad
5. Return to the previous confirmation prompt by entering exit.
Again, the confirmation prompt appears as follows.
Confirm
Are you sure you want to perform this action?
Performing operation "Stop-Process" on Target "notepad (3576)".
[Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help
(default is "Y"):
6. Enter y and press Enter to stop the Notepad process. There is no further
confirmation. The prompt now displays the default Windows PowerShell
prompt, as shown here.
PS C:>
Working with Windows PowerShell
This section goes into detail about how to access Windows PowerShell and
configure the Windows PowerShell console.
Accessing Windows PowerShell
42.
Accessing Windows PowerShell
AfterWindows PowerShell is installed on a down-level system, it becomes
available for immediate use. However, pressing the Windows logo key on the
keyboard and pressing R to bring up a run dialog box—or using the mouse to
choose Start | Run | PowerShell all the time—will become time-consuming and
tedious. (This is not quite as big a problem on Windows 10, where you can just
enter PowerShell on the Start screen.) On Windows 10, I pin both Windows
PowerShell and the Windows PowerShell ISE to both the Start screen and the
taskbar. On Windows Server 2012 R2 running Server Core, I replace the CMD
prompt with the Windows PowerShell console. For me and the way I work, this
is ideal, so I wrote a script to do it. This script can be called through a log-on
script to automatically deploy the shortcut on the desktop. On Windows 10, the
script adds both the Windows PowerShell ISE and the Windows PowerShell
console to both the Start screen and the taskbar. On Windows 7, it adds both to
the taskbar and to the Start menu. The script only works for US English–
language operating systems. To make it work in other languages, change the
value of $pinToStart and $pinToTaskBar to the equivalent values in the target
language.
Note
Using Windows PowerShell scripts is covered in Chapter 5, “Using
Windows PowerShell scripts.” See that chapter for information about how
the script works and how to actually run the script.
The script is called PinToStart.ps1, and is as follows.
PinToStart.ps1
$pinToStart = "Pin to Start"
$file = @((Join-Path -Path $PSHOME -childpath "PowerShell.exe"),
(Join-Path -Path $PSHOME -childpath "powershell_ise.exe") )
Foreach($f in $file)
{$path = Split-Path $f
$shell=New-Object -com "Shell.Application"
$folder=$shell.Namespace($path)
43.
$item = $folder.parsename((Split-Path$f -leaf))
$verbs = $item.verbs()
foreach($v in $verbs)
{if($v.Name.Replace("&","") -match $pinToStart){$v.DoIt()}}
Configuring the Windows PowerShell console
Many items can be configured for Windows PowerShell. These items can be
stored in a PSConsole file. To export the console configuration file, use the
Export-Console cmdlet, as shown here.
PS C:> Export-Console myconsole
The PSConsole file is saved in the current directory by default and has an
extension of .psc1. The PSConsole file is saved in XML format. A generic console
file is shown here.
<?xml version="1.0" encoding="utf-8"?>
<PSConsoleFile ConsoleSchemaVersion="1.0">
<PSVersion>5.0.10224.0</PSVersion>
<PSSnapIns />
</PSConsoleFile>
Controlling Windows PowerShell launch options
1. Launch Windows PowerShell without the banner by using the -NoLogo
argument. This is shown here.
PowerShell -nologo
2. Launch a specific version of Windows PowerShell by using the -Version
argument. This is shown here.
PowerShell -version 3
3. Launch Windows PowerShell using a specific configuration file by
specifying the -PSConsoleFile argument, as follows.
PowerShell -psconsolefile myconsole.psc1
4. Launch Windows PowerShell, execute a specific command, and then exit
by using the -Command argument. The command itself must be prefixed
by an ampersand (&) and enclosed in braces. This is shown here.
Powershell -command "& {Get-Process}"
44.
Supplying options forcmdlets
One of the useful features of Windows PowerShell is the standardization of the
syntax in working with cmdlets. This vastly simplifies the learning of Windows
PowerShell and language constructs. Table 1-1 lists the common parameters.
Keep in mind that some cmdlets cannot implement some of these parameters.
However, if these parameters are used, they will be interpreted in the same
manner for all cmdlets, because the Windows PowerShell engine itself interprets
the parameters.
TABLE 1-1 Common parameters
Note
To get help on any cmdlet, use the Get-Help <cmdletname> cmdlet. For
example, use Get-Help Get-Process to obtain help with using the Get-
Process cmdlet.
Working with the help options
One of the first commands to run when you are opening Windows PowerShell
for the first time is the Update-Help cmdlet. This is because Windows PowerShell
does not include help files with the product, as of Windows PowerShell version
3. This does not mean that no help presents itself—it does mean that help
beyond simple syntax display requires an additional download.
A default installation of Windows PowerShell 5.0 contains numerous modules
that vary from installation to installation, depending upon the operating system
45.
features and rolesselected. In fact, Windows PowerShell 5.0 installed on
Windows 7 workstations contains far fewer modules and cmdlets than are
available on a similar Windows 10 workstation. This does not mean that all is
chaos, however, because the essential Windows PowerShell cmdlets—the core
cmdlets—remain unchanged from installation to installation. The difference
between installations is because additional features and roles often install
additional Windows PowerShell modules and cmdlets.
The modular nature of Windows PowerShell requires additional consideration
when you are updating help. Simply running Update-Help does not update all
of the modules loaded on a particular system. In fact, some modules might not
support updatable help at all—these generate an error when you attempt to
update help. The easiest way to ensure that you update all possible help is to
use both the -Module parameter and the -Force switch parameter. The
command to update help for all installed modules (those that support
updatable help) is shown here.
Update-Help -Module * -Force
The result of running the Update-Help cmdlet on a typical Windows 10 client
system is shown in Figure 1-1.
46.
FIGURE 1-1 Errorsappear when you attempt to update help files that do not
support updatable help.
One way to update help and not receive a screen full of error messages is to
run the Update-Help cmdlet and suppress the errors altogether. This technique
is shown here.
Update-Help -Module * -Force -ea 0
The problem with this approach is that you can never be certain that you
have actually received updated help for everything you wanted to update. A
better approach is to hide the errors during the update process, but also to
display errors after the update completes. The advantage to this approach is the
ability to display cleaner errors. The UpdateHelpTrackErrors.ps1 script illustrates
this technique. The first thing the UpdateHelpTrackErrors.ps1 script does is
empty the error stack by calling the clear method. Next, it calls the Update-Help
module with both the -Module parameter and the -Force switch parameter. In
addition, it uses the -ErrorAction parameter (ea is an alias for this parameter)
with a value of 0 (zero). A 0 value means that errors will not be displayed when
the command runs. The script concludes by using a For loop to walk through
the errors and by displaying the error exceptions. The complete
47.
UpdateHelpTrackErrors.ps1 script isshown here.
UpdateHelpTrackErrors.ps1
$error.Clear()
Update-Help -Module * -Force -ea 0
For ($i = 0 ; $i -lt $error.Count ; $i ++)
{ "`nerror $i" ; $error[$i].exception }
Note
For information about writing Windows PowerShell scripts and about
using the For loop, see Chapter 5.
When the UpdateHelpTrackErrors script runs, a progress bar is shown,
indicating the progress as the updatable help files update. When the script is
finished, any errors appear in order. The script and associated errors are shown
in Figure 1-2.
FIGURE 1-2 Cleaner error output from updatable help is generated by the
UpdateHelpTrackErrors script.
You can also determine which modules receive updated help by running the
48.
Update-Help cmdlet withthe -Verbose switch parameter. Unfortunately, when
you do this, the output scrolls by so fast that it is hard to see what has actually
updated. To solve this problem, redirect the verbose output to a text file. In the
command that follows, all modules attempt to update help. The verbose
messages redirect to a text file named updatedhelp.txt in a folder named fso off
the root.
Update-Help -module * -force -verbose 4>>c:fsoupdatedhelp.txt
Windows PowerShell has a high level of discoverability; that is, to learn how
to use Windows PowerShell, you can simply use Windows PowerShell. Online
help serves an important role in assisting in this discoverability. The help system
in Windows PowerShell can be entered by several methods.
To learn about using Windows PowerShell, use the Get-Help cmdlet as follows.
Get-Help Get-Help
This command prints out help about the Get-Help cmdlet. The output from
this cmdlet is
illustrated here:
NAME
Get-Help
SYNOPSIS
Displays information about Windows PowerShell commands and concepts.
SYNTAX
Get-Help [[-Name] <String>] [-Category <String[]>] [-Component
<String[]>]
[-Full] [-Functionality <String[]>] [-Path <String>] [-Role
<String[]>]
[<CommonParameters>]
Get-Help [[-Name] <String>] [-Category <String[]>] [-Component
<String[]>]
[-Functionality <String[]>] [-Path <String>] [-Role <String[]>] -
Detailed
[<CommonParameters>]
Get-Help [[-Name] <String>] [-Category <String[]>] [-Component
<String[]>]
[-Functionality <String[]>] [-Path <String>] [-Role <String[]>] -
Examples
[<CommonParameters>]
Get-Help [[-Name] <String>] [-Category <String[]>] [-Component
49.
<String[]>]
[-Functionality <String[]>] [-Path<String>] [-Role <String[]>] -
Online
[<CommonParameters>]
Get-Help [[-Name] <String>] [-Category <String[]>] [-Component
<String[]>]
[-Functionality <String[]>] [-Path <String>] [-Role <String[]>] -
Parameter
<String> [<CommonParameters>]
Get-Help [[-Name] <String>] [-Category <String[]>] [-Component
<String[]>]
[-Functionality <String[]>] [-Path <String>] [-Role <String[]>] -
ShowWindow
[<CommonParameters>]
DESCRIPTION
The Get-Help cmdlet displays information about Windows PowerShell
concepts and
commands, including cmdlets, functions, CIM commands, workflows,
providers,
aliases and scripts.
To get help for a Windows PowerShell command, type "Get-Help" followed
by the
command name, such as: Get-Help Get-Process. To get a list of all help
topics
on your system, type: Get-Help *. You can display the entire help
topic or use
the parameters of the Get-Help cmdlet to get selected parts of the
topic, such
as the syntax, parameters, or examples.
Conceptual help topics in Windows PowerShell begin with "about_", such
as
"about_Comparison_Operators". To see all "about_" topics, type: Get-
Help
about_*. To see a particular topic, type: Get-Help about_<topic-name>,
such as
Get-Help about_Comparison_Operators.
To get help for a Windows PowerShell provider, type "Get-Help"
followed by the
provider name. For example, to get help for the Certificate provider,
type:
Get-Help Certificate.
In addition to "Get-Help", you can also type "help" or "man", which
displays
one screen of text at a time, or "<cmdlet-name> -?", which is
identical to
Get-Help but works only for commands.
“Then the deceitwas the braver in its thoroughness. Know,
gentlemen, and Bretons—all, that it was Bertrand du Guesclin who
fought in my brother’s stead!”
Her words fell like stones into a pool, making the waters swing
into merging circles that spread and melted into a vague suggestion
of unrest.
“Messires,” and she looked round at the listening faces with a
brave lifting of the head, “I loved my brother, and I was afraid, for
he was young and not stiffened into manhood when the news came
of the gathering at Mivoie. It was then that Bertrand lodged at La
Bellière with us a night, and since he was my friend I gave my
brother to him with these words: ‘Look to the lad, because I love
him, and because he is our father’s only son.’ Little did I think that
Bertrand du Guesclin would set so great a price upon my words, and
bear the shame to save a coward.”
She ceased, and looked round her at the faces of those who
listened. Only on Carro de Bodegat’s face did she find the
unhallowed glimmer of a prurient sneer.
“If this is the truth—”
It was Dubois, the Breton bear, who came forward several paces
from where he stood.
“It is the truth. Ask the Sire de Tinteniac, ask Robin Raguenel, for
you will find him among the monks of the abbey of Lehon. Shame
drove my brother there when he could no longer bear the burden of
a lie.”
Not a man doubted her in the sincerity of his heart. Carro de
Bodegat alone remained grudging and ungenerous to the end.
“Madame, we have yet to hear the meaning of this man’s hiding
at Pontivy.”
“This man—indeed!” and she let her scorn flash out at him.
“Come, Messire Carro de Bodegat, I will ask you a question in
return. Who was it killed Croquart and his three men single-handed
when you were hunting them with fifty Bretons at your back?”
The laugh was against De Bodegat. The rest had drawn aside
from him. He stood alone, and would not suffer his jealousy to be
convinced.
52.
“Madame, you havenot answered me.”
“I have no wish to answer you, messire. Bertrand, who is no
traitor, will answer for himself.”
The Bretons cheered her. De Bodegat, remembering Croquart’s
mangled neck, looked sullenly at Bertrand and said nothing.
The pent-up ardor of the men burst out at last. All hands were
towards Bertrand, and they crowded about him, strenuous to make
amends. It was Dubois who was the first to do a brave man’s
penance for a savage wrong. And yet another was before him in the
act, for Tinteniac, long a listener, had pushed through the crowd and
rushed on Du Guesclin with a great hearted-shout of joy.
“Bertrand, Brother Bertrand, the prize at Mivoie should have been
yours—not mine.”
“Sire,” and the strong man’s head was bowed at last so that it
rested on Tinteniac’s shoulder—“sire, I am a great fool, but—God
help me—I shall play the woman.”
53.
XXXIX
They stood alonetogether on the edge of the orchard, nothing
but deep grassland before them and the haze of heat that covered
the woods. The men who had followed the green gyron from
Josselin had slipped away by twos and threes—Tinteniac, with his
hand on Dubois’s shoulder; Carro de Bodegat, in sneering solitude
and ready to snap at his best friend.
The bees were working in the apple-boughs, and the birds sang
everywhere. The green lap of the world was filled with the precious
stones from the treasure-chest of spring. Tiphaïne was looking
before her with a faint smile playing about her mouth, the sword
that Carro de Bodegat had surrendered to her held like a crucifix in
her hands.
“Bertrand.”
Now that they were alone together he felt half afraid of her, and
shy of the great gulf that her imagined marriage had set between
them. Tiphaïne, turning to him, wondered why his eyes looked sad.
Her gratitude was more deep than gratitude towards him. Bertrand
might have suspected it had he not been so resigned to believing
her a wife.
“Do you remember the day when you plucked the white May-
bough for me before the tournament at Rennes?”
Bertrand remembered it, and by his face the memory brought
him more bitterness than joy.
“You were a child—then.”
“A child, yes. I can see Robin now cantering his pony over the
meadows. What a blessed boon it is that we mortals cannot foresee
the future! The shame of this thing has broken my father’s heart.”
She began to speak of the past, that past that made the present
seem more unlivable and real. She was grateful to him, Bertrand
54.
knew. But whatwas mere gratitude?—a cup of wine to a starving
man.
“Tiphaïne,” and the low pitch of his voice startled her, “I am
thinking of that poor child’s grave among the beech-trees of
Broceliande.”
“Arletta?”
“Yes. You remember the words you gave me then?”
She looked at him steadily, with a transient quivering of her
upper lip.
“I remember those words. And—I am thinking they may be
forgotten.”
“They can never be forgotten.”
“No?”
“For they have made me something of which I am not ashamed.”
His deep sadness puzzled her, for his eyes were like the eyes of a
man who strives to be patient when suffering inward pain. The
tragedy of the Aspen Tower had left its shadow on him, and yet it
could not explain to her the overmastering melancholy that seemed
to humble his whole heart.
“I did my best to save the lad,” he said.
“Can I doubt that? No, no, you kept your promises almost too
well. If they had hanged you for a traitor I should not have had the
heart to look the world in the face again.”
“What would it have mattered?” and she saw that his bitterness
was not assumed.
“Mattered? To lose the bravest man in Brittany, at the end of a
rope!”
“Tiphaïne!”
“Did I not dream as a child that Bertrand du Guesclin would do
great things. And now this Bertrand du Guesclin is proving the
wisdom of my dreams.”
He looked at her so sadly, but with such an air of patient self-
distrust, that it seemed that her praise was like wealth to a man
dying of some inexorable disease.
“I am glad that I kept my promise,” he began, “and that you can
think well of a man who but a year ago was not worthy to touch
55.
your hands.”
“But now?”
“Now—also”—andhe spoke with a sense of effort—“I am glad—
that you have chosen for yourself a man who in these rough times
can give you honor and strength—things precious to a woman.”
He made a brave uttering of these words, trying not to betray to
her anything of the thoughts that were in his heart. There was a
questioning wonder in Tiphaïne’s eyes. Only at that moment did she
remember the part that the Sieur de Tinteniac had played.
“Bertrand!”
He looked at her sharply, for her voice had startled him.
“I had forgotten that you had followed us from Josselin. You
often watched us with Croquart—was that not so?”
“Yes, I was always on the watch.”
“And perhaps you were near enough to hear some chance
words.”
He flushed like an eavesdropper discovered in a seeming
meanness.
“I was near you—” he began, “because—”
She broke in on him as though she had read his thoughts. “You
believed that I was the Sieur de Tinteniac’s wife?”
“I believed it.”
“You believed that?”
“What else could I believe?”
“It was a mere pretence. Tinteniac knew too well what manner of
man Croquart was.”
She told him the whole truth, and Bertrand watched her even as
he had watched when she had swept past Carro de Bodegat to set
him free. The bonds then had been bonds upon the flesh. Now she
was breaking the spiritual fetters that had been riveted so fast about
his soul.
“Tiphaïne, it is enough.”
The simplicity of those few words showed her how deep a loyalty
had suffered here in silence. Woman that she was, she realized the
completeness of his self-abnegation, and honored him the more
56.
because he hadnot grudged his faith to her when he had no hope of
a reward.
“Bertrand, come near to me. Do you believe that I have told you
the whole truth?”
He looked at her, silent yet very happy.
“I believe whatever you may say to me.”
“Blindly?”
“No—not blindly.”
“And why—not blindly?”
“Because”—and his strong face warmed to her—“because I can
swear you are what you seem to be. Because I know what I myself
have been. Because I have learned what honor is, and to know the
face that cannot give a lie.”
“Then I am the same Tiphaïne who carried the white May-bough
into Rennes?”
“Need you ask that?”
His faith was the more precious to her now that she knew what
such a faith was worth. She turned aside, still holding the sword,
and looked out over the meadows like one who wonders at the
mystery of a moonlit sea. Some measure of awe had fallen on her in
the presence of this silent and patient man who had learned to
suffer—even to the death.
“Bertrand,” she said, at last, “I have a great longing in me for La
Bellière and for my home.”
He bowed his head, watched her, and waited.
“The Sieur de Tinteniac and these men will carry the news to
Beaumanoir at Josselin. Is it your wish that I should go to Josselin
with them?”
“My wish?”
“Yes. For it is your right to ask.”
He drew a deep breath and gave her all his homage.
“If I might take you to La Bellière—”
“Bertrand!”
“You can trust me?”
“I trust you utterly,” she said.
57.
XL
At La Bellièrean old man walked in the garden of the château,
leaning on a servant’s arm and taking short turns to and fro on the
stretch of grass bordering the fish-pond, where the sedges rustled
and the yellow flags were raising their yellow banners above each
clump of spears. The bloom was falling from the fruit trees, and lay
turning brown upon the grass. In the wilder corners of the orchard
the weeds and wild flowers stood knee-deep, the sunlight
shimmering into the waste of green, and making each wild flower
seem like a living gem, red, white, and azure, purple and gold.
A dog wandered lazily at the old man’s heels, snapping now and
again at an over-zealous fly or watching the blackbirds and
mistlethrushes that were foraging for nestfuls of querulous children.
Swallows skimmed the surface of the fish-pond, twittering, and
touching the still water with their wings between the great green
leaves of the water-lilies.
It was Stephen Raguenel, who went slowly to and fro, leaning on
the servant’s arm, his steps weak and hesitating, an expression of
profound and patient melancholy upon his face. He stooped so much
that he seemed to have lost three inches of his stature in a week.
His eyes had lost their pointedness and their sparkle; they were
fixed and vacant, the eyes of a man who is living largely in the past.
From time to time the Vicomte would lift his head and look round
him with the half-wistful wonder of a child. The second simplicity of
life seemed to be taking possession of him, and the pride of the
great seigneur had mellowed into the quiet gentleness of the old
man.
The servant, whose head was but a shade darker than his
master’s, kept step with him, and did not speak except when spoken
to. Nor was his respect a thing of the surface only. He had felt much
58.
that the Vicomtehimself had felt, and the shadow of humiliation fell
also across his face.
“Girard, good fellow, what day of the week is it?”
“The third, sire.”
“Ah, ah, and the swallows are here. It is hardly a year ago since
we rode to join Madame the Countess in the south.”
“Yes, sire, that is so.” And the servant, with the discretion of a
good listener, contented himself with following where his master led.
“How do the apricots look on the south wall, Girard—eh?”
“They have been full of bloom, sire.”
“Madame Tiphaïne is fond of the fruit. Let me see, Girard—how
many leagues is it to Josselin from here?”
Girard pretended to consider, though he was asked the same
question twenty times a day.
“Some seventeen leagues, I should say, sire, by Montcontour and
Loudeac.”
“And it was Thursday?”
“A Thursday, sire, when madame set out.”
The Vicomte had halted and appeared to be counting the ripples
that a swallow’s wings had raised on the quiet waters of the pool.
“Then I shall judge that they reached Josselin on the Sabbath,
Girard—eh?”
“I should judge so, sire.”
“And to-day is Tuesday.”
“To-day is Tuesday.”
“Then on the morrow or the next day we should have good
news?”
“To-morrow or the next day, sire, we should have good news.”
Stephen Raguenel turned away from the fish-pond with a quiet
sigh.
“That is well, that is well. I think I will rest, Girard, on the seat
under the Pucelle de Saintongue. Thanks, my good fellow. There is
no news to-day from the abbey of Lehon?”
“No news, sire,” and Girard passed a nervous hand across his
mouth.
“Abbot Stephen has a good name in Dinan, Girard—eh?”
59.
“A very goodname, sire. The country people call him their ‘little
father.’ ”
“Their ‘little father’?” and the Vicomte folded his arms. “He will be
a spiritual father to my son, my good Girard. Good luck to the lad.
He was the only son I had.”
It so happened that while Stephen Raguenel dozed in the sun on
the bench under the pear-tree, Stephen, Abbot of Lehon, dealt with
two shamefaced mortals who had begged an audience of him that
very morning. They were none other than the two La Bellière men-
servants who had shown such whole-hearted consideration for
Croquart in refusing to hinder him in the capturing of the Sieur de
Tinteniac and their lady. Honestly ashamed of the part they had
played in the adventure, they had ridden back from Loudeac, only to
find that they had not the courage to be the bearers of such news to
their lord and master the Vicomte of La Bellière.
Being sensible fellows, they had conceived the plan of shifting
the responsibility upon the fatherly shoulders of the Abbot of Lehon.
The Abbot did not thank them in the sincerity of his heart, but,
being a conscientious priest, bemoaned the disaster and accepted
the responsibility.
He ordered the two men to be locked up safely in two vacant
cells.
The Vicomte had lost one child to the Church, and Abbot Stephen
concluded that it would be courting a calamity to confess to him that
his other child had been stolen by the “Flemish Devil.” Madame
Tiphaïne and the Sieur de Tinteniac might be rescued by the Bretons
under Messire Geoffroi Dubois, and the Abbot deemed it wise to
temporize, in the hope of receiving better news.
Unfortunately the good man’s discretion was nullified by the
tongue of an irresponsible woman, and that woman Lisette,
Tiphaïne’s bower wench whom the two men had left at Loudeac. A
meddlesome but warm-hearted creature, she had made her way to
Dinan by begging a place on the back of a pack-horse belonging to a
merchant who was returning to that town after disposing of his
goods at Loudeac. From Dinan she trudged to La Bellière, carrying
her news like a piece of hot pudding on her tongue. To such a
60.
woman it waseasier to chatter than to think, and after such a
journey it was imperative that she should create something of a
sensation. She created it by falling in a faint at the Vicomte’s feet as
the old man crossed the court-yard from the garden, leaning on
Girard’s arm.
The woman was a fool, and Girard, shrewd in his generation,
suspecting that she was ready to shriek the news of some calamity
into his master’s ears, promptly attempted to smother her
indiscretion by whipping her gown up over her face.
“Ah, the little fox! Pierre, Gilbert, carry the baggage into the
kitchen and give her a cup of wine.”
He was bending over Lisette and stuffing her gown into her
mouth to prolong her fainting fit. Several men ran forward, pounced
on her, and prepared to bundle her unceremoniously out of the
Vicomte’s sight.
“Who is it, Girard?”
“No one, sire—only a silly chit who has walked too fast in the
sun,” and his knuckles showed no consideration for the softness of
Lisette’s lips.
The men were lifting her from the flag-stones when she
recovered her senses with true hysterical inopportuneness and
began to claw at the dress Girard had turned up over her head. The
old man saw a scream gathering in the bower woman’s bosom, and
did his best to throttle it in her throat.
“Fool! idiot! hold your tongue—”
Lisette wriggled her hands free and clawed at Girard’s face.
“Sire, sire—”
“Devil take the cat!”
The men showed her no great courtesy, but the gown fell away
from her face in the scuffle.
“Let me be, fools!”
“Hold your tongue, you she-dog!”
“Sire, sire, they are hiding the truth from you. It is Lisette,
madame’s woman.”
The Vicomte’s shadow fell across the flag-stones close to her.
“Lisette!”
61.
He had recognizedthe girl. Girard stood back and surrendered to
the hysterical folly of a woman.
“Let her be, men. Come, what has happened?”
The dishevelled figure fell on its knees at the Vicomte’s feet.
“Sire, sire, a great misfortune.”
“Ah!”
“Madame has been taken by Croquart the Fleming. It was on the
road to Josselin.” And she gabbled all she knew, and straightway
began to weep.
Stephen Raguenel looked down at her mutely, very gently, yet
with a peculiar quivering of the lips. There was nothing foolish in
Lisette’s grief to him. The truth was too poignant to suffer him to
feel the thoughtless egotism of the woman’s tears.
“Girard.”
The old man was at his side, looking questioningly into his
master’s face.
“Girard, help me to my room. I had rather have heard that she
was dead.”
62.
XLI
Over golden moorsand through winding woodways deep with the
glamour of forests in green leaf, Bertrand and Tiphaïne rode
homeward towards Dinan.
Since there seemed something sacred in the days to them, they
shunned the towns and villages, holding to the wilderness of the
woods and moors, as though solitude and the silence thereof had a
restfulness for either heart. For Bertrand that season of the world’s
awakening had been a season of storm, of weary nights and
troubled dawns. He had slain his own self, to find his manhood
reincarnated in the second life that had risen for him like a gold
cloud out of the east. He was as a man who had much to remember,
and much more to foreshadow. The woods and moors had a sudden
awe for him, an awe that played like sacred fire upon the solemn
summits of the hills.
As a man’s life is, so are his desires. In the making or the
marring it is the genius of effort that sets the furnace glowing and
strikes with the hammer upon the malleable metal of the soul. No
man ever drifted into strength or dreamed into nobleness by lying on
a bed with a wine-cup at his elbow. We gather life or lose it. God
strikes no balance for us. We may labor blindly, but we must labor—
to be men.
As for Bertrand, he had grown young and old in the same breath
—young in that he had won the brave ardor of his youth again; old,
because he had taken the temper of the world, and learned to
behold the conquering good even in the darkness of disloyalty and
shame. He had come to true manhood by throwing that same
manhood bound and broken at the feet of honor. He had won in
thinking that he had lost, triumphed by believing that he could bear
defeat.
63.
Therefore he rodebeside Tiphaïne, the Child of the White May
Bough, the Enchantress of the Aspen Tower, looking upon the beauty
of her womanhood without fear, yet with awe. Her face seemed to
open the gates of heaven before his eyes. He was content to follow
her, hoping that in due season he might hold her hand in his.
The first night they lodged in a little inn upon the road. There
was but one guest-chamber in the place, and Tiphaïne slept there,
while Bertrand lay awake before the door.
They passed the second night in an open wood, great pine-trees
towering to the stars, Tiphaïne asleep on a bed of heather that
Bertrand’s hands had gathered and spread. He stood on guard till
the dawn came, feeling the dark, whispering wood like some solemn
temple where he could keep vigil as a sacred right. Tiphaïne slept,
even like a trusting child. Her great faith in him made Bertrand
happy, happy as a man who has conquered fame.
He saw the dawn come up, a stealing into the sky of vapors of
crimson and of gold. He knew that that evening they would reach La
Bellière. It was to be the last day of their pilgrimage together.
The sunlight was slanting through the trees, warming the red
trunks, when Tiphaïne awoke and saw Bertrand, motionless, a pillar
of patience, leaning upon his sword. There was a faint glimmering of
sunlight in the eyes that looked at him. Her hair bathed Tiphaïne’s
face like some soft autumn color bathing the white face of an
autumn flower.
She left the bed of heather, and Bertrand heard the rustle of her
footsteps in the grass. He turned, looking like one who has been
watching the sunrise and finding the woods dark and mist-fogged
after the brightness of the broadening east.
Tiphaïne’s eyes had the strangeness of eyes that are half happy
and half sad.
“And I have let you watch all night!”
He looked at her and smiled.
“It has seemed short enough.”
“Then Bertrand du Guesclin is never weary?”
“I had my own thoughts. With some thoughts—a man is never
tired.”
64.
The secrets ofthe heart escape in the uttering of a few simple
words. They stood looking at each other, each wishing to be
compassionate yet honest. Tiphaïne’s eyes were the first to turn
away.
“We shall reach La Bellière to-night,” she said.
“Yes, to-night.”
“And I shall see my father.”
Perhaps there was the slightest tremor of regret quivering in her
thankfulness. Bertrand was watching Tiphaïne as a strong man
watches the light or shadow in the eyes of one he loves.
“Shall I be welcome at La Bellière?”
“Welcome?”
“You see, some men are remembered—with bitterness.”
“You misjudge my father.”
“No, but I feel for him.”
“I know it.”
She lifted her face to his with a brave quickening of her
womanhood. Instinct told her all that was in Bertrand’s heart.
His hands were opening and shutting upon the hilt of his sword.
“A year ago you know what manner of man I was.”
“I know what manner of man I honor now.”
“You called me a worthless ruffian, and you were right.”
“Forget the words.”
“No, before God, no; they made me turn into a man.”
“And you, Bertrand, have taught me many things in return.”
It was as though she yielded, and yet did not yield.
“Tiphaïne.”
“We owe so much to you, we of La Bellière.”
His hands swept out to her, letting the sword fall.
“No, no, do not say that. Am I a man to trade upon my deeds?”
“Bertrand!”
“Forget them, for I should hate myself if you were to look on me
as one who had plotted for your gratitude. Tiphaïne, I am just a
man. I am thinking of you as the child who rescued me at Rennes.”
His words moved her more deeply than he imagined. She looked
into his swarthy and impassioned face, and felt his homage leap up
65.
about her likesacred fire.
“If I might speak it?”
She faltered, and her cheeks were red, her eyes mysterious.
“No, no, not now—”
He went near to her, holding out his great, strong hands.
“I am a rough, ignorant fool, but—before God—I know now how
to give you homage.”
“Bertrand, I know it—”
“Well—”
“Wait”—and she looked at him, and then at the hands he held to
her—“I ask you to see the shadows that I see, the shadows that are
darkening my own home.”
“Shadows?”
“Yes”—and her courage came to her—“I am thinking Bertrand, of
my father, and of Robin hiding in the cloisters of Lehon.”
He dropped his hands and drew back a step, not harshly or
selfishly, but with the reverence of a man who could behold the
same vision as her tenderness beheld.
“Tiphaïne, I never had a home.”
“No.”
“They always hated me. And yet—”
“And yet you feel what I feel, the sacredness that watches over
home. Bertrand, there is my father; my heart goes out to him; I
remember how he looked at me when I told him the truth of Robin’s
shame.”
His face was more tender towards her than before.
“He loved the lad.”
“And now he looks to me for all the love he lost at Mivoie. To-
night he will kiss me and think me all his own.”
There was no bitterness in Bertrand’s eyes.
“You have a great heart in you.”
“Bertrand, you understand?”
“God bless you, yes.”
She went to him suddenly and took his hands.
“Patience.”
And in her eyes he might have read the dawning truth.
66.
XLII
In the Abbot’sparlor at Lehon there was a window that looked
out upon the abbey garden, with its sunny stretch of turf, broad
beds of herbs and vegetables, its barrier of aspen-trees about the
orchard, an orchard rich in Pucelle de Flanders, St. Reols, and Caillon
pears, cherries, and quinces, and pearmain apples. At this same
window stood the Abbot Stephen, and behind him, half in the
shadow, a girl in a gray hood and cloak and a man in black and rusty
harness. The window was shaded, moreover, by a swinging lattice
and by the red flowers and green leaves of a climbing rose, whose
tendrils wavered athwart the blue of the summer sky.
Below, in the garden, between two broad bands of beans in
flower, a young man in a russet-colored cassock was stooping over
an onion-bed, holding a basket woven of osier twigs in one hand,
while with the other he pulled up weeds. From time to time he stood
up as though to stretch himself, or took to crawling between the
rows, pushing the basket before him and throwing the weeds into it
as he worked. The cowl of the cassock was turned back, leaving his
head with its cropped hair bare to the sun.
The man weeding the onion-bed was Robin Raguenel; those who
watched him, Bertrand du Guesclin and Robin’s sister.
The crawling figure, in its brown cassock, hardly suggested the
young Breton noble who had ridden out to fight at Mivoie in all the
splendor and opulence of arms. Robin had changed the sword for
the hoe, the helmet for a basket of osiers. In lieu of cantering to the
cry of trumpets over the Breton moors, he crawled across the
cabbage and onion beds of the abbey of Lehon, the sun scorching
his rough cassock, his nails rimmed with dirt, his sandalled feet
brown with the warm earth of the garden. Here was a
transfiguration that challenged the pride of the worldly-hearted.
“Pax Dei.”
67.
Abbot Stephen crossedhimself, beholding in Tiphaïne’s eyes a
certain unpleased pity, as though the crawling figure of her brother
had made her set the past beside the present.
Abbot Stephen looked at her steadily and smiled.
“You are offended for your brother’s sake,” he said.
Her eyes were on Robin, who had squatted on his heels to rest,
and was staring vacantly into the basket half filled with weeds.
“Offended, father?”
“There is more wisdom, child, in this penance than the mere eye
can see.”
She still watched Robin, an expression of poignant pity upon her
face.
“The change is so sudden to me,” she said.
Stephen of Lehon spread his hands with a gesture of fatherly
assent.
“And yet, my daughter, there is wisdom in this work of his. Your
brother’s pride is in the dust, and in the dust man’s humbleness may
find that subtle and mysterious seed that has its flowering when the
heart is sad.”
“It is difficult for me, father, not to grudge the past.”
“Is there, then, no glory, child, save in the service of the sword?”
He looked at her with an amiable austerity whose humaneness
had not hardened into the mere dogmatism of the priest. Abbot
Stephen still boasted the instinctive sympathy of youth. As for
Tiphaïne, she glanced at Bertrand, who had drawn back into the
room, arguing in her heart that it was better to fight God’s battle in
the world than to dream dreams in a religious house.
“Christ our Lord was but a carpenter.” And the Abbot crossed
himself.
“I remember it.”
“In the simple things of life the heart finds comfort. A sinless
working with the hands leads to a sinless working of the soul. It was
the lad himself who prayed me to give him work to do.”
She put her hands together as though in prayer.
“My brother must know his own needs,” she said. “It is better to
work than to sulk like a sick hawk upon a perch.”
68.
“Child, that isthe right spirit.”
And he stood to bless her, with no complacent unction, but with
heart of grace.
For a while she looked at Robin kneeling on the naked earth, her
silence seeming to confess that she was more content to leave him
in the Church’s keeping.
“I go now to La Bellière,” she said, quietly.
“You have a double share, my child, to give and to receive.”
“God grant that I may remember it,” and she turned to Bertrand
with a stately lifting of the head.
At La Bellière the sky was an open wealth of blue, the aspens all
a-whisper. And yet, with summer reddening the lips of June, the
sorrow of the place was still like the sighing of a wind through winter
trees on a winter evening. Logs burned in the great fireplace of the
solar. Stephen Raguenel, looking like some December saint, craved
from the flames that warmth that life and the noon sun could not
give.
The turrets were casting long shadows towards the east when
dust rose on the road from Dinan. A few peasants were running in
advance of a knight and a lady who wound between the aspen-trees
towards the towers and chimneys of La Bellière. Soon there came
the sound of men shouting, the clatter of hoofs on the bridge before
the gate. The starlings and jackdaws wheeled and chattered about
the chimneys. It was as though the château had slept under some
wizard’s spell, to awake suddenly at the sounding of a hero’s horn.
Girard, discretion among the discreet, was craning out of a turret
window, his face like a vociferous gargoyle spouting from a wall. He
saw madame’s palfrey, the cloak with its crimson lining, and
understood that Croquart had been cheated of a ransom.
Girard ran down the tower stair two steps at a time, bruised his
forehead—without swearing—against the cross-beam of a door, and
reached the great court in time to see Tiphaïne and the man in the
black harness ride in through the gate.
“Assuredly this is God’s doing.” And Girard crossed himself before
running forward to join his fellow-servants in frightening the
starlings, who were unaccustomed to so much shouting.
69.
“Madame, this isGod’s doing.”
He kissed the hem of her cloak, and was asked but a single
question in return:
“Girard, my father?”
“Now that madame has come back to us my lord the Vicomte will
most surely live.”
She left the saddle and bade Bertrand follow her. But the man in
the black harness held back, feeling that he was a stranger amid the
curious and many faces that filled the court-yard of La Bellière.
“Go,” he said to her. “I will wait my time.”
“Perhaps it is better.”
“Yes, that you should go to him alone.”
Girard, sparkling like a well-polished flagon, and brimful of
exultation, presented his homage to the gentleman on the black
horse. All the La Bellière servants had been told the truth. Messire
Bertrand du Guesclin could have commanded more devotion at that
moment than Charles of Blois himself.
“The grace of God to you, messire,” and Girard’s face carried
more than a servile blessing.
The men made the turrets ring.
“God and St. Ives for the Eagle of Cancale!”
They crowded round, each trying to hold his stirrup or bridle or
to take his spear. Their enthusiasm grew bolder as the contact
became more intimate. Two of the tallest men soon had Bertrand
upon their shoulders, and carried him in triumph to the dais in the
great hall.
Girard’s bald pate glistened with obeisances.
“Would my lord eat and drink?”
Bertrand accepted the suggestion. He felt it embarrassing, this
setting-up of him like an idol to be stared at unwinkingly by so many
pairs of eyes. If the god ate, they would at least see that he was
half-human like themselves.
“My good-fellow, honest men are always thirsty.”
And had it been possible they would have emptied a hogshead of
Bordeaux down Bertrand’s throat by way of testifying their devotion.
70.
Even the cook,gardeners, and dairy-women crowded “the
screens” to catch a glimpse of Bertrand as he sat at the high table.
They watched him eat and drink as though he were an ogre,
whispering together, peeping over one another’s shoulders.
Bertrand, who had none of the spirit of the mock hero, chafed under
this flattering publicity, being in no humor to be gaped at like a black
bear in a cage.
“My good-fellow, do people ever eat here?”
Girard flourished a napkin and looked puzzled.
“Ah, messire—”
“These friends of yours seem to grudge me my hunger by the
way they push and stare.”
Girard took the hint and closed the doors on the array of
inquisitive faces. He returned and made his bow.
“Messire du Guesclin must pardon the people. Messire du
Guesclin is a great soldier and a hero.”
“Nonsense, sir,” and Bertrand laughed half foolishly at Girard’s
magniloquent respect.
“Messire, you have a modest heart.”
“Modest heart!—to the devil with you!”
“And a courage that will not be flattered.”
Bertrand picked up his wine-cup and held it towards Girard.
“Enough, friend,” he said; “I am clumsy at catching compliments.
Drink to all good Bretons. That will please me better.”
And Girard drank, his eyes looking at Bertrand over the rim of the
cup.
It was then that the door leading to the stairway behind the dais
opened, showing Tiphaïne in a green gown, a red girdle about her
waist.
“Bertrand.”
He saw at once that she had been weeping, though her eyes
shone like a clear sky after rain.
“Come.”
Bertrand followed her without a word. She climbed the stairs and
halted on the threshold of the solar, her hand on the latch of the
closed door.
71.
“My father hasasked for you.”
The man before her appeared far more distrustful of himself than
if he had been called to lead the forlornest of forlorn hopes.
“You will find him changed.”
“Am I to go alone?”
“If you wish it.”
Bertrand’s face betrayed his unwillingness.
“I would rather—”
“I came with you?”
And she took his hand.
Stephen Raguenel was sitting in his chair before the fire, with the
look of a man exhausted by too sudden and great a joy. Tears were
still shining on his cheeks. Bertrand felt more afraid of him than of a
weeping girl.
“Father, I have brought Bertrand to you.”
The old man would have risen; his hands were already on the
arms of his chair. Bertrand, a great rush of pity sweeping away his
awkwardness, went to him and knelt like a stripling beside the
Vicomte’s chair.
“Sire—”
Stephen Raguenel laid his hands upon Bertrand’s shoulders. His
eyes had a blind and vacant look. It was the wreck of a face that
Bertrand saw gazing into his.
“It is you, Messire Bertrand du Guesclin?”
“It is I, sire.”
“We owe you much, my Tiphaïne and I.”
“Sire, let us not speak of it,” and his mouth quivered, for he saw
in the old man’s eyes the yearning of a father for his son.
“No, messire, our honor is with us yet. We give you that gratitude
of which God alone can know the depth. Child, is not that so?”
Tiphaïne had slipped behind him, and stood leaning upon the
carved back of the chair. Her hands rested on her father’s shoulders.
He drew them down with his and looked up wistfully into her face.
“Bertrand braved more than death for us,” she said.
“For the lad Robin’s sake.”
“Yes, for him.”
72.
He lay backin his chair with his eyes closed, his breathing slow
and regular like the breathing of one who sleeps. Bertrand had risen,
and was leaning against the carved hood of the chimney. He
remembered vividly that night, not many weeks, ago when the old
man had gloried in the promise of his son.
Tiphaïne’s hands were smoothing her father’s hair. The touch of
those hands brought a smile to the old man’s face. He opened his
eyes to look at her, and in that look the heart of the father seemed
to drink in peace.
Bertrand turned, and went stealthily towards the door. He
opened it gently, and left them alone together.
73.
XLIII
Bertrand rode outhawking early on the forenoon of the third day
at La Bellière, leaving Tiphaïne and her father seated together under
the Vicomte’s favorite pear-tree in the orchard. He had chosen a
gerfalcon in the La Bellière mews, and taken the path towards a
marsh where there was a heron passage some three miles from the
château. He rode alone, with the bird belled and hooded on his
wrist, more intent, perhaps, in gaining solitude than on seeing the
falcon make a flight. For the heart of a man in love is a world within
itself, where the green pastures and deep woods are tinged with a
melancholy like the perfume of wild thyme in the green deeps of
June.
But there was more than mere melancholy in Bertrand’s heart
that morning, for the truth was plain to him as the blue sweep of the
summer sky that the old man at La Bellière lived in the spirit on the
eyes and lips of Tiphaïne, his child. The vision of yesterday shone
ever before Bertrand’s mind, the vision of Stephen Raguenel’s face
glowing with a reflected light, a light falling from Tiphaïne’s face,
with its great eyes and splendid sheen of hair. Nor would Bertrand
have grudged the old man this, or have reproached Tiphaïne for
having a woman’s heart. Men look for piety in priests, patience in a
philosopher, tenderness and loyalty in a daughter towards her sire.
The true man desires to find a beautiful completeness in the
creature of his heart’s creation. He would rather starve his own
desires than see her fail in some sacred duty towards her soul.
But the Vicomte had given Bertrand food for reflection that same
morning, nor had the food seemed particularly sweet.
“I am remembering, Messire Bertrand,” he had said, “that there
are other hearts in Brittany more near of sympathy to you than ours.
We must not keep you at La Bellière.”
74.
A broad hint,forsooth, and Bertrand had read more in the old
man’s restless eyes than the Vicomte’s tongue had suffered him to
say. Half an hour’s talk with Tiphaïne at the open window! Stephen
Raguenel had even grudged him that, and betrayed by a flash of
senile peevishness that the younger man’s presence cast a shadow
across the narrowing path of age.
Human, most human, and yet there was something pitiful to
Bertrand in the old man’s sensitiveness, his readiness to resent any
sharing of Tiphaïne’s thoughts. No doubt she was all that was left to
him, his pearl of great price, which he would suffer no other man to
handle. In this life the services of a friend may be too soon forgotten
when the clash of interests rouses the armed ego. Gratitude is the
most volatile of all the sentiments. Return an old man his lost purse,
and it is but natural that he should knit his brows when the self-
same purse is coveted by the very mortal who returned it.
Yet to one who has suffered in the cause of others a grudging
and suspicious spirit is as a north wind in the midst of June. It was
for this reason that Bertrand’s heart was bitter in him that morning,
not because Tiphaïne loved her father, but because the old man
grudged her even a friend. In the past the lord of La Bellière would
have laughed at such a notion of tyranny. But sorrow and the
slackening of the fibres of the heart can change the temper of the
happiest mind.
The forenoon had gone when Bertrand turned homeward to La
Bellière without having so much as slipped the hood or jesses. Yet
even though he had won nothing by the falcon’s talons, he had
come by a decision to leave La Bellière on the morrow.
Not in the best of tempers, he came suddenly upon two shabby-
looking devils squatting side by side under a wayside cross. They
were sharing half a brown loaf and a bottle of cider, the jaws of both
munching energetically with that stolid emphasis that betrays the
philosophic and worldly mendicant. A couple of rusty swords and
bucklers lay on the grass at the men’s feet. One of the pair was
leathery and tall; the other, buxom about the body, with a face that
matched the frayed scarlet of his coat.
75.
They sighted Bertrand,falcon on wrist, and stared at him
casually as though considering whether he was a gentleman likely to
disburse a coin. There was an abrupt slackening of the masticatory
muscles. Two pairs of eyes were startled by the apparition. The lean
man bolted a large mouthful of bread and started up with a shout
that sent Bertrand’s horse swerving across the road.
The loaf and the cider bottle were tossed upon the grass.
“Soul of my grandmother, bully Hopart, but it’s the captain!”
“Lording! lording!”
“Devil’s luck, and I’m no sinner!”
They made a rush across the grass, waving their caps and
cutting grotesque capers.
“Hopart! Guicheaux!”
“The very dogs, messire.”
“God save me, but this is gallant!”
Bertrand’s face beamed like a great boy’s as he rolled out of the
saddle almost into Guicheaux’s arms. Hopart and his brother bully
sprang at him like a couple of barking and delirious dogs. So rough
and strenuous were their methods of showing joy that a stranger
might have taken them for a couple of footpads in the act of robbing
a gentleman of his purse.
“Captain, captain, I could hug the heart out of you.”
“Goodman, Guicheaux. Give me a grip.”
“A crack of the knuckle-bones. Sir, but you are still strong in the
fist.”
In the midst of all this loving turbulence the gyrfalcon on
Bertrand’s wrist took to fluttering and screeching by way of protest,
ruffled in feathers as well as temper. Bertrand disentangled himself,
laughing and not a little out of breath.
“Captain, we have been beating all the country this side of
Loudeac.”
“Good-fellows!”
“And, lord, we have had our hands busy cramming lies back
down these squeakers’ throats. Faugh! how some of these fat folk
stink of the pit!”
“So you have heard lies, eh?”
76.
Hopart and Guicheauxexchanged glances.
“Well, captain, there’s never a wind in seed-time but thistle-
down’s a blowing. Certain lewd rogues had been puffing a tale of the
fight at Mivoie.”
“To be sure.”
“What is more, captain, a harping devil made so bold as to blab
of it at Cancale.”
“To Sieur Robert, eh?”
“Yes, and to madame.”
“And it was believed?”
Guicheaux screwed his hatchet face into a kind of knot.
“Your pardon, captain, Madame Jeanne is a great lady.”
“And has some spite against me. Well?”
Guicheaux looked at Hopart; his comrade returned an eloquent
grin.
“Well, captain, we two took that harping devil and half drowned
him in the ditch.”
“You did?”
“But madame had her weapons ready. Brother Hopart, be so
good as to scratch my back.”
The fat man pulled up the thin man’s shirt, and Guicheaux
displayed a back still livid from the blows of a whip.
“Madame knows how to argue, captain,” and he chuckled.
“What, they whipped you?”
“By the lord, they did that!” and Guicheaux proceeded to display
in turn his comrade’s honorable scars.
Bertrand looked at them, stubble-chinned rascals that they were,
and felt a significant stiffening of the throat. It was no news to him
that Dame Jeanne should have been ready to hear him slandered,
but the loyalty of these rough dogs of war more than compensated
for the smart.
“Hopart, Guicheaux, answer me. It was told then to madame my
mother that Bertrand du Guesclin had played the traitor?”
They both stared at him and nodded.
“She believed it?”
Again the two heads bobbed acquiescence.
77.
“And you?”
“We, captain?”
“Yes,you.”
“Well,” and Guicheaux looked embarrassed—“well, Brother
Hopart, what did we do?”
“Kicked,” quoth the fat man, “and were royally toe-plugged for
our pains.”
Bertrand slipped the jesses and shook the falcon from his wrist.
He opened his arms to the two men, and Messire Bertrand du
Guesclin might have been seen embracing the two vagabonds like
brothers.
“Assuredly,” he said, “that harper friend of yours told lies.”
“Captain!”
“I fought at Mivoie, but not in my own arms.”
“Captain! captain!”
“All Brittany will soon know the truth.”
“St. Ives du Guesclin!” And Guicheaux threw his cap into the air,
sprang at Hopart, and smote him an open-handed smack across the
chest.
“Bully Hopart, bully Hopart, we must get drunk on this—or die!”
And they gripped hands and danced round Bertrand like a couple
of clowns at a fair.
78.
XLIV
While Hopart andGuicheaux discovered themselves in such
excellent fettle over the recovery of their idol, no less a person than
Madame Jeanne du Guesclin presented her husband’s pennon before
the great gates of La Bellière.
The disgrace at the Oak of Mivoie had sent Madame Jeanne upon
a pilgrimage among her friends, for the news of Bertrand’s troth-
breaking had challenged her pride, if it had not troubled her
affection. Sieur Robert, a fat imbecile, had been left to gormandize
at Cancale, while the wife, with sweet Olivier at her side, rode out to
play the Roman mother. It was a necessary discretion that Bertrand
should be sacrificed, nor did Madame Jeanne fail in the heroism of
her indignation.
Sumptuous in red gown, with streamers of gold at the elbows, a
short “spencer” of blue cloth open at the hips, a hood of some
amber-colored stuff with liripipia of green silk, Madame Jeanne rode
her roan horse into the La Bellière court. Olivier, as flushed and
splendid as his mother, straight-waisted, full and jagged in the
sleeves, smiled at the wide welkin as though his motto were, “By
God’s soul, I am the man.” Ten armed servants in red and green, a
falconer, two huntsmen with four hounds in leash, followed hard at
madame’s heels.
Some people seem designed by nature for the more spacious
ways of life, for terraces that touch the sunset, marble stairways,
and chairs of gold. This largeness of presence was part of Jeanne du
Guesclin’s birthright. Standing in the state solar of La Bellière, with
one hand on Olivier’s shoulder, she dwarfed her slim fop of a son,
whose mawkish look betrayed the oppression of a youth tired by
indiscriminate motherly conceit.
The window of the solar, with its scarlet cushions and carved
pillars in the jambs, looked out upon the garden, where Madame
79.
Jeanne could seethe Vicomte asleep on the bench under the Pucelle
de Saintonge. Half an hour had passed since Girard had bowed them
into the state solar, and Madame Jeanne was not a lady who could
wait in patience. She watched Stephen Raguenel with a slight
twitching of her nostrils and the air of a grand seigneuress much
upon her dignity.
“It seems that they do things slowly at La Bellière.”
Olivier yawned behind his hand.
“The roads are devilish dry,” he remarked. “I should not quarrel
with a cup of wine. The old gentleman there appears to have eaten
a big dinner.”
“The servants must be fools.”
“Probably Madame Tiphaïne is looking out her very best gown.”
And Olivier began to flick the dust from the embroidery and the
slashed splendor of his côte hardie.
Jeanne du Guesclin looked at him and smiled.
“If Robin Raguenel is half as handsome—”
“Pooh, mother!”
“—as Messire Olivier.”
“Confound my good looks,” and he pretended to appear modestly
impatient. “How often are you talking to me as though I were a fool
of a peacock?”
“There, put your girdle straight, Olivier. If I have a handsome
son, am I not allowed to use my eyes?”
“I may be straighter in the legs than Bertrand,” and he gave a
sharp and shallow laugh.
“Bertrand, indeed! We shall soon have done with the worthless
fool. My friends cannot say that I am prejudiced in the man’s favor,
since I have been the first to tell many of them the truth.”
“Poor fellow!”
It was curious to watch Jeanne du Guesclin’s eyes change their
expression—like water that seems hardened by the passing of a
cloud.
“Remember, you have taken Bertrand’s place,” she said.
“Poor Bertrand!” and he showed his teeth; “if Beaumanoir
catches him, he will most assuredly be hanged.”
80.
“Let them hangthe traitor. I can have no pity for a turncoat and
a coward.”
Tiphaïne was in her brother’s room, looking through the hundred
and one things that had belonged to Robin: his whips and hunting-
spears; the jesses, hoods, and gloves he had used in hawking; a few
books; a great press full of perfumed clothes. On a peg by the
window hung the surcoat that Bertrand had worn at Mivoie. The
room was much as the lad had left it on the night of his flight to the
abbey of Lehon. None of the servants had dared to touch the room.
The care of all these treasures of a young man’s youth had been left
to Tiphaïne like some sacred trust.
It was in this room that Girard found her, kneeling before the
great carved chest, her brother’s helmet in her lap. She was
burnishing the armor that Robin should have worn at Mivoie, and
whose sheen displayed the scars gotten from the English swords.
The light from the window fell across her figure as she knelt, her
hair aglow, her eyes deep with the pathos of the past.
“Madame.”
To Girard it seemed that she had been praying, and perhaps
weeping, over her brother’s arms. His voice startled her, for she had
not heard the opening of the door.
“Girard?”
The old man bowed to her as she rose with Robin’s helmet in her
hands.
“Pardon, madame, there are guests in the great solar.”
“I heard the sound of trumpets, Girard, and thought that Messire
Bertrand had returned.”
“It is his mother, madame.”
“Jeanne du Guesclin?”
“And Messire Olivier with her.”
Tiphaïne laid Robin’s helmet upon the bed, closed the great
chest, and went to her own room, telling Girard not to wake the
Vicomte. She changed her old gown for one of grass-green dusted
with violets, fastened on a girdle of beaten silver and a brooch of
lapis lazuli at her throat. Like Girard, she believed that Jeanne du
81.
Guesclin had riddento La Bellière with the news of Bertrand’s
nobleness ringing like some old epic in her ears.
The windows of the gallery that led from Tiphaïne’s room
towards the chapel and the great solar looked out westward over the
main court. The sun beat full upon these windows, and Tiphaïne, as
she passed, had a blurred vision of Jeanne du Guesclin’s men, in
their red jupons slashed with green, crowding round some of the La
Bellière servants. They appeared to be arguing and chaffering over
some piece of news. In fact, Madame Jeanne’s men were in the
process of being enlightened as to that truth of which their mistress
was most unmotherly in her ignorance. Tiphaïne loitered a moment
at one of the windows. She had an instinctive antipathy for the
haughty-mouthed lady of Motte Broon. The two strong natures were
in contrast, and Tiphaïne was in no mood for uncovering her heart
for the edification of this woman, whom she had distrusted ever
since the days at Rennes.
To Girard, Tiphaïne had given orders that the Vicomte was not to
be disturbed, for she had taken the cares of the household on her
own shoulders; nor was her father in a fit state to be afflicted with
the irresponsible sympathy of inquisitive friends. The honor of the
château was with Tiphaïne, and it was this same honor that brought
Girard to the door of the state solar ten minutes after his mistress
had entered. Girard’s fist was about to knock, when the pitch of the
voices from within suggested suddenly that any intrusion would be
indiscreet.
Girard stood there stroking his chin and knowing not for the
moment whether to enter or to retire. Tiphaïne was speaking, not
loudly, but with that intensity of self-restraint that made each word
ring like the clear stroke of a bell. Girard, who had known her since a
child, and had grown familiar with every modulation of her voice,
could see her, even though the door was shut. She would be
standing at her full height, her head thrown back a little, her eyes
looking straight at the face of the woman to whom she spoke.
Soon a harsher, sharper voice broke in at intervals, questioning,
criticising, snapping out short sentences with too evident a twinge of
temper. Madame Jeanne had lost her haughty poise, and Girard,