Introduction p. xv Acknowledgments p. xx Finding Your Way Around Windows PowerShell p. 1 Getting Started with Windows PowerShell p. 3 Installing Windows PowerShell p. 3 Installing.NET Framework 2.0 p. 4 Installing Windows PowerShell p. 7 Starting and Stopping PowerShell p. 8 Starting PowerShell p. 8 Exiting PowerShell p. 10 Startup Options p. 10 Finding Available Commands p. 11 Getting Help p. 14 Basic Housekeeping p. 17 Case Insensitivity p. 18 What You Get in PowerShell p. 19 Interactive Command Shell p. 19 Cmdlets p. 20 Scripting Language p. 21 Summary p. 23 The Need for Windows PowerShell p. 25 Limitations of CMD.exe p. 27 Batch Files p. 28 Inconsistency of Implementation p. 28 Inability to Answer Questions p. 29 Lack of Integration with GUI Tools p. 29 The GUI Emphasis in Windows p. 29 Previous Attempted Solutions p. 29 Windows Script Host p. 30 Windows Management Instrumentation p. 30 Summary p. 31 The Windows PowerShell Approach p. 33 A New Architecture p. 33.NET Framework-Based Architecture p. 34 Object-Based Architecture p. 35 A New Cross-Tool Approach p. 38 GUI Shell (MMC Layered over PowerShell) p. 39 Command Line p. 39 Command Scripting p. 41 COM Scripting p. 43 Namespaces as Drives p. 45
File System Provider p. 47 Registry p. 47 Aliases p. 48 Variables p. 49 Active Directory p. 50 Certificates p. 51 Extensibility and Backward Compatibility p. 51 Aliases p. 51 Use Existing Utilities p. 53 Use Familiar Commands p. 55 Long Term Roadmap: Complete Coverage in 3 to 5 Years p. 55 COM Access p. 56 WMI Access p. 56.NET Class Access p. 56 Object-Based Approach in PowerShell p. 56 Object-Based Pipelines p. 56 A Consistent Verb-Noun Naming Scheme p. 57 Coping with a Diverse World p. 58 Upgrade Path to C# p. 58 Working with Errors p. 58 Debugging in PowerShell p. 59 Additional PowerShell Features p. 59 Extended Wildcards p. 59 Automatic Variables p. 60 Summary p. 62 Using the Interactive Shell p. 63 Windows PowerShell's Two Command Line Parsing Approaches p. 63 Expression Mode Examples p. 65 Command Mode Examples p. 66 Mixing Expressions and Commands p. 69 Exploring a Windows System with Windows PowerShell p. 69 Finding Running Processes p. 69 Filtering Processes Using where-object p. 71 Filtering Processes Using Wildcards p. 72 Finding Out about Services p. 73 Finding Running Services p. 74 Finding Other Windows PowerShell Commands p. 75 Using Abbreviated Commands p. 76 Command Completion p. 76 Aliases p. 77 Working with Object Pipelines p. 78
Sequences of Commands p. 78 Filtering Using where-object p. 79 Sorting p. 81 Grouping p. 83 Pros and Cons of Verbosity p. 85 Interactive p. 85 Stored Commands p. 87 Summary p. 87 Using Snapins, Startup Files, and Preferences p. 89 Startup p. 89 Snapins p. 90 Profiles p. 97 Profile.ps1 p. 98 Aliases p. 100 The export-alias Cmdlet p. 105 The get-alias Cmdlet p. 107 The import-alias Cmdlet p. 108 The new-alias Cmdlet p. 108 The set-alias Cmdlet p. 109 The Help Alias p. 111 Command Completion p. 112 Prompts p. 113 Preference Variables p. 115 Summary p. 116 Parameters p. 117 Using Parameters p. 118 Finding Parameters for a Cmdlet p. 121 Named Parameters p. 124 Wildcards in Parameter Values p. 125 Positional Parameters p. 127 Common Parameters p. 132 Using Variables as Parameters p. 133 Summary p. 135 Filtering and Formatting Output p. 137 Using the where-object Cmdlet p. 137 Simple Filtering p. 138 Using Multiple Tests p. 140 Using Parameters to where-object p. 142 The where-object Operators p. 144 Using the select-object Cmdlet p. 144 Selecting Properties p. 145
Expanding Properties p. 146 Selecting Unique Values p. 147 First and Last p. 148 Default Formatting p. 151 Using the format-table Cmdlet p. 155 Using the property Parameter p. 156 Using the autosize Parameter p. 157 Hiding Table Headers p. 158 Grouping Output p. 158 Specifying Labels and Column Widths p. 159 Using the format-list Cmdlet p. 161 Using the update-formatdata and update-typedata Cmdlets p. 162 Summary p. 163 Using Trusting Operations p. 165 Look Before You Leap p. 166 Using the remove-item Cmdlet p. 166 Using the whatif Parameter p. 175 Using the stop-process Cmdlet p. 175 Using the stop-service Cmdlet p. 178 Using the confirm Parameter p. 180 Using the verbose Parameter p. 181 Summary p. 182 Retrieving and Working with Data p. 183 Windows PowerShell Providers p. 183 Using the get-psdrive Cmdlet p. 184 Using the set-location Cmdlet p. 188 Using the passthru Parameter p. 190 Using the get-childitem Cmdlet p. 191 Using the get-location Cmdlet p. 194 Using the get-content Cmdlet p. 196 Using the measure-object Cmdlet p. 201 The new-item Cmdlet p. 203 The new-psdrive Cmdlet p. 204 Summary p. 205 Scripting with Windows PowerShell p. 207 Enabling Scripts on Your Machine p. 207 Using the read-host Cmdlet p. 212 Using the write-host Cmdlet p. 214 The Arithmetic Operators p. 218 Operator Precedence p. 219 The Assignment Operators p. 220
The Comparison Operators p. 222 The Logical Operators p. 225 The Unary Operators p. 226 Using the set-variable and Related Cmdlets p. 227 The set-variable Cmdlet p. 228 The new-variable Cmdlet p. 229 The get-variable Cmdlet p. 230 The clear-variable Cmdlet p. 231 The remove-variable Cmdlet p. 232 Summary p. 234 Additional Windows PowerShell Language Constructs p. 235 Arrays p. 235 Creating Typed Arrays p. 239 Modifying the Structure of Arrays p. 241 Working from the End of Arrays p. 245 Concatenating Arrays p. 248 Associative Arrays p. 249 Conditional Expressions p. 250 The if Statement p. 251 The switch Statement p. 254 Looping Constructs p. 256 The for Loop p. 256 The while Loop p. 258 The do/while Loop p. 259 The foreach Statement p. 260 Summary p. 262 Processing Text p. 263 The.NET String Class p. 263 Working with String Methods p. 267 Casting Strings to Other Classes p. 287 URI p. 287 Datetime p. 288 XML p. 289 Regex p. 289 Summary p. 291 COM Automation p. 293 Using the new-object Cmdlet p. 293 Working with Specific Applications p. 294 Working with Internet Explorer p. 294 Working with Windows Script Host p. 299 Working with Word p. 301
Working with Excel p. 302 Accessing Data in an Access Database p. 303 Working with a Network Share p. 305 Using Synthetic Types p. 306 Summary p. 308 Working with.net p. 309 Windows PowerShell and the.net Framework p. 309 Creating.NET Objects p. 311 The new-object Cmdlet p. 311 Other Techniques to Create New Objects p. 317 Inspecting Properties and Methods p. 320 Using the get-member Cmdlet p. 320 Using.NET Reflection p. 324 Using the GetMembers() Method p. 324 Using the GetMember() Method p. 326 Using the GetMethods() Method p. 328 Using the GetMethod() Method p. 329 Using the GetProperties() Method p. 330 Using the GetProperty() Method p. 331 Using System.Type Members p. 333 Summary p. 334 Putting Windows PowerShell to Work p. 335 Using Windows PowerShell Tools for Discovery p. 337 Exploring System State p. 338 Using the get-location Cmdlet p. 338 Handling Errors p. 345 Namespaces p. 346 PowerShell Aliases p. 346 PowerShell Functions and Filters p. 349 PowerShell Variables p. 350 Exploring the Environment Variables p. 351 Exploring the Current Application Domain p. 353 Exploring Services p. 357 Using the get-service Cmdlet p. 358 Using the new-service Cmdlet p. 360 Using the restart-service Cmdlet p. 361 Using the set-service Cmdlet p. 362 Using the start-service Cmdlet p. 362 Using the stop-service Cmdlet p. 363 Using the suspend-service Cmdlet p. 364 Summary p. 365
Security p. 367 Minimizing the Default Risk p. 368 The Certificate Namespace p. 374 Signed Scripts p. 376 Creating a Certificate p. 376 The set-authenticodesignature Cmdlet p. 377 The get-authenticodesignature Cmdlet p. 379 Summary p. 379 Working with Errors and Exceptions p. 381 Errors in PowerShell p. 381 $Error p. 383 Using Error-Related variables p. 388 Using the $ErrorView variable p. 389 Using the $ErrorActionPreference variable p. 390 Trap Statement p. 392 Using Common Parameters p. 397 Using the ErrorAction Parameter p. 397 Using the ErrorVariable Parameter p. 399 The write-error Cmdlet p. 400 Summary p. 401 Debugging p. 403 Handling Syntax Errors p. 403 The set-psdebug Cmdlet p. 408 The write-debug Cmdlet p. 413 Tracing p. 418 The trace-command Cmdlet p. 419 The set-tracesource Cmdlet p. 422 The get-tracesource Cmdlet p. 422 Summary p. 423 Working with the File System p. 425 Path Names in Windows PowerShell p. 426 Fully Qualified Path Names p. 427 Relative Path Names p. 430 Path Names and Running Commands p. 431 Simple Tasks with Folders and Files p. 434 Finding the drives on a system p. 434 Finding Folders and Files p. 434 Finding File Characteristics p. 436 Exploring Files Using the select-object Cmdlet p. 439 Finding Hidden Files p. 442 Tab Completion p. 443
Redirection p. 445 Creating Custom Drives p. 447 Cmdlets for File Actions p. 449 Using the out-file Cmdlet p. 449 Using Cmdlets to Work with Paths p. 450 Summary p. 453 Working with the Registry p. 455 Introduction to the Registry p. 455 Exploring the Registry Using Windows PowerShell p. 458 Selecting a Hive p. 458 Navigating to a Desired Key p. 459 Changing the Registry p. 461 Summary p. 464 Working with Environment Variables p. 465 Environment Variables Overview p. 465 The Environment Command Shell Provider p. 468 Exploring Environment Variables p. 470 Modifying Environment Variables p. 471 Summary p. 473 Language Reference p. 475 Working with Logs p. 477 Event Log Basics p. 477 The get-eventlog Cmdlet p. 480 Summary p. 494 Working with WMI p. 495 Introducing Windows Management Instrumentation p. 496 Managed Resources p. 496 WMI Infrastructure p. 497 CIM Object Manager p. 498 The CIM Repository p. 499 WMI Consumers p. 499 WMI Tools p. 499 Using the get-wmiobject Cmdlet p. 502 Finding WMI Classes and Members p. 506 Exploring a Windows System p. 509 Characterizing the CPU p. 509 Finding Memory p. 510 Exploring Services p. 512 Exploring Remote Machines p. 513 Summary p. 514 Index p. 515
Table of Contents provided by Blackwell's Book Services and R.R. Bowker. Used with permission.