MANNING Don Jones Richard Siddaway Jeffery Hicks An administrator’s guide Covers PowerShell 3.0 www.it-ebooks.info PowerShell in Depth www.it-ebooks.info www.it-ebooks.info PowerShell in Depth A N ADMINISTRATOR ’ S GUIDE DON JONES RICHARD SIDDAWAY JEFFERY HICKS MANNING S HELTER I SLAND www.it-ebooks.info For online information and ordering of this and other Manning books, please visit www.manning.com. The publisher offers discounts on this book when ordered in quantity. For more information, please contact Special Sales Department Manning Publications Co. 20 Baldwin Road PO Box 261 Shelter Island, NY 11964 Email: orders@manning.com ©2013 by Manning Publications Co. All rights reserved. No part of this publication may be reproduced, stored in a retrieval system, or transmitted, in any form or by means electronic, mechanical, photocopying, or otherwise, without prior written permission of the publisher. Many of the designations used by manufacturers and sellers to distinguish their products are claimed as trademarks. Where those designations appear in the book, and Manning Publications was aware of a trademark claim, the designations have been printed in initial caps or all caps. Recognizing the importance of preserving what has been written, it is Manning’s policy to have the books we publish printed on acid-free paper, and we exert our best efforts to that end. Recognizing also our responsibility to conserve the resources of our planet, Manning books are printed on paper that is at least 15 percent recycled and processed without the use of elemental chlorine. Manning Publications Co. Development editor: Cynthia Kane 20 Baldwin Road Copyeditor: Liz Welch PO Box 261 Technical proofreader: Aleksandar Nikolic Shelter Island, NY 11964 Proofreader: Linda Recktenwald Typesetter: Dennis Dalinnik Cover designer: Marija Tudor ISBN: 9781617290558 Printed in the United States of America 1 2 3 4 5 6 7 8 9 10 – MAL – 19 18 17 16 15 14 13 www.it-ebooks.info v brief contents P ART 1 P OWER S HELL FUNDAMENTALS . 1 1 ■ Introduction 3 2 ■ PowerShell hosts 7 3 ■ Using the PowerShell help system 17 4 ■ The basics of PowerShell syntax 29 5 ■ Working with PSSnapins and modules 39 6 ■ Operators 46 7 ■ Working with objects 60 8 ■ The PowerShell pipeline 93 9 ■ Formatting 111 P ART 2 P OWER S HELL MANAGEMENT 127 10 ■ PowerShell Remoting 129 11 ■ Background jobs and scheduling 160 12 ■ Working with credentials 174 13 ■ Regular expressions 184 14 ■ Working with HTML and XML data 196 www.it-ebooks.info BRIEF CONTENTS vi 15 ■ PSDrives and PSProviders 210 16 ■ Variables, arrays, hash tables, and scriptblocks 224 17 ■ PowerShell security 244 18 ■ Advanced PowerShell syntax 257 P ART 3 P OWER S HELL SCRIPTING AND AUTOMATION 275 19 ■ PowerShell’s scripting language 277 20 ■ Basic scripts and functions 291 21 ■ Creating objects for output 301 22 ■ Scope 317 23 ■ PowerShell workflows 332 24 ■ Advanced syntax for scripts and functions 359 25 ■ Script modules and manifest modules 379 26 ■ Custom formatting views 391 27 ■ Custom type extensions 403 28 ■ Data language and internationalization 417 29 ■ Writing help 429 30 ■ Error handling techniques 435 31 ■ Debugging tools and techniques 447 32 ■ Functions that work like cmdlets 466 33 ■ Tips and tricks for creating reports 485 P ART 4 A DVANCED P OWER S HELL 495 34 ■ Working with the Component Object Model (COM) 497 35 ■ Working with .NET Framework objects 505 36 ■ Accessing databases 517 37 ■ Proxy functions 525 38 ■ Building a GUI 538 39 ■ WMI and CIM 557 40 ■ Best practices 584 www.it-ebooks.info vii contents preface xxi acknowledgments xxiii about this book xxv about the authors xxvii about the cover illustration xxix P ART 1 P OWER S HELL FUNDAMENTALS . 1 1 Introduction 3 1.1 Who this book is for 3 1.2 What this book will teach you 4 1.3 What this book won’t teach you 4 1.4 Where we drew the line 5 1.5 Beyond PowerShell 5 1.6 Ready? 6 2 PowerShell hosts 7 2.1 32-bit vs. 64-bit, and administrator vs. not 8 2.2 The console 10 2.3 The PowerShell ISE 12 www.it-ebooks.info CONTENTS viii 2.4 Command history buffer vs. PowerShell’s history 15 2.5 Transcripts 16 2.6 Summary 16 3 Using the PowerShell help system 17 3.1 The help commands 17 3.2 Where’s the help? 18 3.3 Using the help 20 3.4 “About” help files 23 3.5 Provider help 24 3.6 Interpreting command help 25 3.7 Common parameters 27 3.8 Summary 28 4 The basics of PowerShell syntax 29 4.1 Commands 30 Aliases: nicknames for commands 31 ■ Command name tab completion 32 4.2 Parameters 32 Truncating parameter names 34 ■ Parameter name tab completion 35 4.3 Typing trick: line continuation 35 4.4 Parenthetical commands and expressions 36 4.5 Script blocks 37 4.6 Summary 38 5 Working with PSSnapins and modules 39 5.1 There’s only one shell 39 5.2 PSSnapins vs. modules 40 5.3 Loading, autoloading, and profiles 41 5.4 Using extensions 41 Discovering extensions 41 ■ Loading extensions 43 Discovering extensions’ additions 43 ■ Managing extensions 44 5.5 Command name conflicts 44 5.6 Managing module autoloading 45 5.7 Summary 45 www.it-ebooks.info CONTENTS ix 6 Operators 46 6.1 Logical and comparison operators 47 The –contains operator 48 ■ The -in and -notin operators 49 Boolean, or logical, operators 50 ■ Bitwise operators 51 6.2 Arithmetic operators 53 6.3 Other operators 55 String and array manipulation operators 55 Object type operators 56 ■ Format operator 57 Miscellaneous operators 58 6.4 Summary 59 7 Working with objects 60 7.1 Introduction to objects 61 7.2 Members: properties, methods, and events 63 7.3 Sorting objects 68 7.4 Selecting objects 69 Use 1: choosing properties 70 ■ Use 2: choosing a subset of objects 71 ■ Use 3: making custom properties 73 Use 4: extracting and expanding properties 75 Use 5: choosing properties and a subset of objects 79 7.5 Filtering objects 79 Simplified syntax 79 ■ Full syntax 81 7.6 Grouping objects 81 7.7 Measuring objects 83 7.8 Enumerating objects 84 Full syntax 85 ■ Simplified syntax 85 7.9 Importing, exporting, and converting objects 86 7.10 Comparing objects 90 7.11 Summary 92 8 The PowerShell pipeline 93 8.1 How the pipeline works 93 The old way of piping 94 ■ The PowerShell way of piping 95 8.2 Parameter binding ByValue 96 8.3 Pipeline binding ByPropertyName 98 8.4 Troubleshooting parameter binding 104 www.it-ebooks.info [...]... 35.7 36.1 36.2 36.3 Introduction to COM objects 498 Instantiating COM objects in PowerShell 500 Accessing and using COM objects’ members 500 PowerShell and COM examples 503 Summary 504 Classes, instances, and members 506 NET Framework syntax in PowerShell 507 NET support in PowerShell 508 Accessing static members 509 Finding the right framework bits 509 Creating and working with instances 514 Summary... 465 Summary 465 Defining the task 467 Building the command 468 Parameterizing the pipeline 469 Adding professional features 472 Error handling 472 Adding verbose and debug output 474 object name 477 32.6 32.7 32.8 32.9 32.10 ■ Making it a function and adding help Creating a custom view 479 Creating a type extension 480 Making a module manifest 481 Summary 484 www.it-ebooks.info Defining a custom 477... endpoints Enabling the “second hop” 149 Setting up WinRM listeners 150 Other configuration scenarios 152 148 Cross-domain Remoting 152 Quotas 153 Configuring on a remote machine 154 Key WinRM configuration settings 154 Adding a machine to your Trusted Hosts list 155 Using Group Policy to configure Remoting 156 ■ ■ ■ ■ 10.11 10.12 11 Implicit Remoting 157 Summary 159 Background jobs and scheduling 160... www.manning.com/PowerShellinDepth We, along with our technical reviewer, have strived to test and retest everything But sometimes errors will still sneak through We encourage you to use the Author Online forum for this book at www.manning.com/PowerShellinDepth to post any corrections, as well as your comments or questions on the book’s content Author Online Purchase of PowerShell in Depth includes... in most IT roles He has always been interested in automation tech- niques (including automating job creation and submission on mainframes many years ago) PowerShell caught his interest and Richard has been using it since the early beta versions He regularly blogs about PowerShell, and using PowerShell, at http:/ / msmvps.com/blogs/richardsiddaway/default.aspx Richard founded and still runs the UK PowerShell. .. How proxy functions work 526 Creating a basic proxy function 526 Adding a parameter 528 Removing a parameter 532 Turning it into a function 534 Summary 536 WinForms via PowerShell Studio Creating the GUI 540 Using the script 548 38.2 38.3 38.4 38.5 39 ■ 539 Adding the code 543 Windows Presentation Foundation (WPF) and ShowUI 552 WinForms vs WPF 554 Ideas for leveraging a GUI tool 555 Summary 556 WMI... conventions and downloads All source code in listings or in text is in a fixed-width font like this to separate it from ordinary text Code annotations accompany many of the listings, highlighting important concepts In some cases, numbered bullets link to explanations that follow the listing The code samples are based on PowerShell 3.0 We intended the samples to be instructive, but we did not design them... 1-to-1 Remoting 133 Remoting caveats 136 140 Creating a persistent session 140 Using a session 140 Managing sessions 141 Disconnecting and reconnecting sessions 141 ■ ■ 10.5 Advanced session techniques Session parameters 10.6 144 ■ 144 Session options Creating a custom endpoint 145 145 Custom endpoints for delegated administration www.it-ebooks.info 147 CONTENTS 10.7 10.8 10.9 10.10 xi Connecting to nondefault... and scheduling 160 11.1 Remoting-based jobs 160 Starting jobs 161 Checking job status 162 Working with child jobs 162 Waiting for a job 164 Stopping jobs 164 Getting job results 164 Removing jobs 165 Investigating failed jobs 166 ■ ■ ■ ■ ■ 11.2 11.3 WMI jobs 166 Scheduled jobs 167 Scheduled jobs overview 168 Creating a scheduled job 168 Managing scheduled jobs 169 Working with scheduled job results... a PowerShell MVP for the last five years A regular speaker and writer on PowerShell topics, his previous Manning books include PowerShell in Practice and PowerShell and WMI JEFFERY HICKS is a Microsoft MVP in Windows PowerShell, Microsoft Certified Trainer and an IT veteran with 20 years of experience, much of it spent as an IT consultant xxvii www.it-ebooks.info xxviii ABOUT THE AUTHORS specializing . MANNING Don Jones Richard Siddaway Jeffery Hicks An administrator’s guide Covers PowerShell 3.0 www.it-ebooks.info PowerShell in Depth www.it-ebooks.info www.it-ebooks.info PowerShell in Depth A N . way of piping 95 8.2 Parameter binding ByValue 96 8.3 Pipeline binding ByPropertyName 98 8.4 Troubleshooting parameter binding 104 www.it-ebooks.info CONTENTS x 8.5 When parameter binding lets. 85 7.9 Importing, exporting, and converting objects 86 7.10 Comparing objects 90 7.11 Summary 92 8 The PowerShell pipeline 93 8.1 How the pipeline works 93 The old way of piping 94 ■ The PowerShell