Windows PowerShell Cookbook

Book description

This Cookbook by Windows PowerShell team developer Lee Holmes provides hundreds of tested scripts that you can use right away to get Microsoft's new tool working for you. More than 150 recipes, combined with a concise task-based introduction to the Windows PowerShell scripting language and environment, make it the perfect look-up guide when you encounter a thorny problem, or need a quick solution. The ideal companion to any tutorial or reference, this book meets the needs of system administrators at any level.

Microsoft has revolutionized the world of system management and command-line shells with its release of Windows PowerShell, and Lee Holmes gives you practical tools and inside advice that will make you a more productive user and administrator. You will be able to solve everything from automating routine tasks, working with files, event logs and other forms of structured data, to managing the users and resources of complex Windows networks. Each recipe includes a focused piece of code plus discussion of how and why it works, so that you can apply the solution to similar tasks.

You get an array of recipes covering PowerShell fundamentals, common tasks, and administrator tasks, including:

  • Pipelines, variables, objects, looping and flow control, strings and unstructured text, calculations and math


  • Simple files; structured files; Internet-enabled scripts; code reuse; lists, arrays and hashtables; user feedback; error management; environmental awareness; script signing; and more


  • Files and directories, registry manipulation, comparing data, event logs, process cmdlets, service cmdlets, Active Directory, enterprise computer management, and more


Those who administer Microsoft's Exchange 2007 and System Center Operations Manager (formerly MOM) will also benefit from this book, with separate chapters devoted to these servers. All Windows administrators will appreciate the appendices that include a PowerShell language quick reference, and a reference to the .NET, WMI and COM objects that PowerShell scripters will use often.

With working scripts, tutorials, and references all in one volume, Windows PowerShell Cookbook will turbocharge the productivity of any Windows administrator.

Publisher resources

View/Submit Errata

Table of contents

  1. A Note Regarding Supplemental Files
  2. Foreword
    1. Glue, Enablers, and a WSH
    2. That Lee Guy
  3. Preface
    1. Who This Book Is For
    2. How This Book Is Organized
    3. What You Need to Use This Book
    4. Conventions Used in This Book
    5. Code Examples
    6. Comments and Questions
    7. Acknowledgments
  4. I. Tour
    1. A Guided Tour of Windows PowerShell
      1. Introduction
      2. An Interactive Shell
      3. Structured Commands (Cmdlets)
      4. Deep Integration of Objects
      5. Administrators As First-Class Users
      6. Composable Commands
      7. Techniques to Protect You from Yourself
      8. Common Discovery Commands
      9. Ubiquitous Scripting
      10. Ad Hoc Development
      11. Bridging Technologies
      12. Namespace Navigation Through Providers
      13. Much, Much More
  5. II. Fundamentals
    1. 1. The Windows PowerShell Interactive Shell
      1. Introduction
      2. 1.1. Run Programs, Scripts, and Existing Tools
      3. 1.2. Run a PowerShell Command
      4. 1.3. Customize Your Shell, Profile, and Prompt
      5. 1.4. Find a Command to Accomplish a Task
      6. 1.5. Get Help on a Command
      7. 1.6. Program: Search Help for Text
      8. 1.7. Invoke a PowerShell Script From Outside PowerShell
      9. 1.8. Program: Retain Changes to Environment Variables Set by a Batch File
      10. 1.9. Get the System Date and Time
      11. 1.10. Determine the Status of the Last Command
      12. 1.11. Measure the Duration of a Command
      13. 1.12. Customize the Shell to Improve Your Productivity
      14. 1.13. Program: Learn Aliases for Common Commands
      15. 1.14. Access and Manage Your Console History
      16. 1.15. Store the Output of a Command into a File
      17. 1.16. Add Information to the End of a File
      18. 1.17. Record a Transcript of Your Shell Session
      19. 1.18. Display the Properties of an Item As a List
      20. 1.19. Display the Properties of an Item As a Table
      21. 1.20. Manage the Error Output of Commands
      22. 1.21. Configure Debug, Verbose, and Progress Output
      23. 1.22. Extend Your Shell with Additional Snapins
      24. 1.23. Use Console Files to Load and Save Sets of Snapins
    2. 2. Pipelines
      1. 2.0. Introduction
      2. 2.1. Filter Items in a List or Command Output
      3. 2.2. Program: Simplify Most Where-Object Filters
      4. 2.3. Program: Interactively Filter Lists of Objects
      5. 2.4. Work with Each Item in a List or Command Output
      6. 2.5. Automate Data-Intensive Tasks
    3. 3. Variables and Objects
      1. 3.0. Introduction
      2. 3.1. Store Information in Variables
      3. 3.2. Access Environment Variables
      4. 3.3. Control Access and Scope of Variables and Other Items
      5. 3.4. Work with .NET Objects
      6. 3.5. Create an Instance of a .NET Object
      7. 3.6. Program: Create Instances of Generic Objects
      8. 3.7. Reduce Typing for Long Class Names
      9. 3.8. Use a COM Object
      10. 3.9. Learn About Types and Objects
      11. 3.10. Get Detailed Documentation About Types and Objects
      12. 3.11. Add Custom Methods and Properties to Objects
      13. 3.12. Add Custom Methods and Properties to Types
    4. 4. Looping and Flow Control
      1. 4.0. Introduction
      2. 4.1. Make Decisions with Comparison and Logical Operators
      3. 4.2. Adjust Script Flow Using Conditional Statements
      4. 4.3. Manage Large Conditional Statements with Switches
      5. 4.4. Repeat Operations with Loops
      6. 4.5. Add a Pause or Delay
    5. 5. Strings and Unstructured Text
      1. 5.0. Introduction
      2. 5.1. Create a String
      3. 5.2. Create a Multiline or Formatted String
      4. 5.3. Place Special Characters in a String
      5. 5.4. Insert Dynamic Information in a String
      6. 5.5. Prevent a String from Including Dynamic Information
      7. 5.6. Place Formatted Information in a String
      8. 5.7. Search a String for Text or a Pattern
      9. 5.8. Replace Text in a String
      10. 5.9. Convert a String to Upper/Lowercase
      11. 5.10. Trim a String
      12. 5.11. Format a Date for Output
      13. 5.12. Program: Convert Text Streams to Objects
      14. 5.13. Generate Large Reports and Text Streams
    6. 6. Calculations and Math
      1. 6.0. Introduction
      2. 6.1. Perform Simple Arithmetic
      3. 6.2. Perform Complex Arithmetic
      4. 6.3. Measure Statistical Properties of a List
      5. 6.4. Work with Numbers As Binary
      6. 6.5. Simplify Math with Administrative Constants
      7. 6.6. Convert Numbers Between Bases
  6. III. Common Tasks
    1. 7. Simple Files
      1. 7.0. Introduction
      2. 7.1. Get the Content of a File
      3. 7.2. Search a File for Text or a Pattern
      4. 7.3. Parse and Manage Text-Based Logfiles
      5. 7.4. Parse and Manage Binary Files
      6. 7.5. Create a Temporary File
      7. 7.6. Search and Replace Text in a File
    2. 8. Structured Files
      1. 8.0. Introduction
      2. 8.1. Access Information in an XML File
      3. 8.2. Perform an XPath Query Against an XML File
      4. 8.3. Modify Data in an XML File
      5. 8.4. Easily Import and Export Your Structured Data
      6. 8.5. Store the Output of a Command in a CSV File
      7. 8.6. Import Structured Data from a CSV File
      8. 8.7. Use Excel to Manage Command Output
    3. 9. Internet-Enabled Scripts
      1. 9.0. Introduction
      2. 9.1. Download a File from the Internet
      3. 9.2. Download a Web Page from the Internet
      4. 9.3. Program: Get-PageUrls
      5. 9.4. Program: Connect-WebService
      6. 9.5. Export Command Output As a Web Page
      7. 9.6. Program: Send an Email
      8. 9.7. Program: Interact with Internet Protocols
    4. 10. Code Reuse
      1. 10.0. Introduction
      2. 10.1. Write a Script
      3. 10.2. Write a Function
      4. 10.3. Write a Script Block
      5. 10.4. Return Data from a Script, Function, or Script Block
      6. 10.5. Place Common Functions in a Library
      7. 10.6. Access Arguments of a Script, Function, or Script Block
      8. 10.7. Access Pipeline Input
      9. 10.8. Write Pipeline-Oriented Scripts with Cmdlet Keywords
      10. 10.9. Write a Pipeline-Oriented Function
    5. 11. Lists, Arrays, and Hashtables
      1. 11.0. Introduction
      2. 11.1. Create an Array or List of Items
      3. 11.2. Create a Jagged or Multidimensional Array
      4. 11.3. Access Elements of an Array
      5. 11.4. Visit Each Element of an Array
      6. 11.5. Sort an Array or List of Items
      7. 11.6. Determine Whether an Array Contains an Item
      8. 11.7. Combine Two Arrays
      9. 11.8. Find Items in an Array That Match a Value
      10. 11.9. Remove Elements from an Array
      11. 11.10. Find Items in an Array Greater or Less Than a Value
      12. 11.11. Use the ArrayList Class for Advanced Array Tasks
      13. 11.12. Create a Hashtable or Associative Array
      14. 11.13. Sort a Hashtable by Key or Value
    6. 12. User Interaction
      1. 12.0. Introduction
      2. 12.1. Read a Line of User Input
      3. 12.2. Read a Key of User Input
      4. 12.3. Program: Display a Menu to the User
      5. 12.4. Display Messages and Output to the User
      6. 12.5. Provide Progress Updates on Long-Running Tasks
      7. 12.6. Write Culture-Aware Scripts
      8. 12.7. Program: Invoke a Script Block with Alternate Culture Settings
      9. 12.8. Access Features of the Host’s User Interface
      10. 12.9. Program: Add a Graphical User Interface to Your Script
    7. 13. Tracing and Error Management
      1. 13.0. Introduction
      2. 13.1. View the Errors Generated by a Command
      3. 13.2. Handle Warnings, Errors, and Terminating Errors
      4. 13.3. Output Warnings, Errors, and Terminating Errors
      5. 13.4. Debug a Script
      6. 13.5. Collect Detailed Traces of a Script or Command
      7. 13.6. Program: Analyze a Script’s Performance Profile
    8. 14. Environmental Awareness
      1. 14.0. Introduction
      2. 14.1. View and Modify Environment Variables
      3. 14.2. Access Information About Your Command’s Invocation
      4. 14.3. Program: Investigate the InvocationInfo Variable
      5. 14.4. Find Your Script’s Name
      6. 14.5. Find Your Script’s Location
      7. 14.6. Find the Location of Common System Paths
      8. 14.7. Program: Search the Windows Start Menu
      9. 14.8. Get the Current Location
      10. 14.9. Safely Build File Paths Out of Their Components
      11. 14.10. Interact with PowerShell’s Global Environment
    9. 15. Extend the Reach of Windows PowerShell
      1. 15.0. Introduction
      2. 15.1. Access Windows Management Instrumentation Data
      3. 15.2. Program: Determine Properties Available to WMI Filters
      4. 15.3. Program: Search for WMI Classes
      5. 15.4. Use .NET to Perform Advanced WMI Tasks
      6. 15.5. Convert a VBScript WMI Script to PowerShell
      7. 15.6. Automate Programs Using COM Scripting Interfaces
      8. 15.7. Program: Query a SQL Data Source
      9. 15.8. Access Windows Performance Counters
      10. 15.9. Program: Invoke Native Windows API Calls
      11. 15.10. Program: Add Inline C# to Your PowerShell Script
      12. 15.11. Access a .NET SDK Library
      13. 15.12. Create Your Own PowerShell Cmdlet
      14. 15.13. Add PowerShell Scripting to Your Own Program
    10. 16. Security and Script Signing
      1. 16.0. Introduction
      2. 16.1. Enable Scripting Through an Execution Policy
      3. 16.2. Sign a PowerShell Script or Formatting File
      4. 16.3. Program: Create a Self-Signed Certificate
      5. 16.4. Manage PowerShell Security in an Enterprise
      6. 16.5. Verify the Digital Signature of a PowerShell Script
      7. 16.6. Securely Handle Sensitive Information
      8. 16.7. Securely Request Usernames and Passwords
      9. 16.8. Program: Start a Process As Another User
      10. 16.9. Securely Store Credentials on Disk
      11. 16.10. Access User and Machine Certificates
      12. 16.11. Program: Search the Certificate Store
  7. IV. Administrator Tasks
    1. 17. Files and Directories
      1. 17.0. Introduction
      2. 17.1. Find All Files Modified Before a Certain Date
      3. 17.2. Clear or Remove a File
      4. 17.3. Manage and Change the Attributes of a File
      5. 17.4. Get the Files in a Directory
      6. 17.5. Find Files That Match a Pattern
      7. 17.6. Manage Files That Include Special Characters
      8. 17.7. Program: Get Disk Usage Information
      9. 17.8. Determine the Current Location
      10. 17.9. Monitor a File for Changes
      11. 17.10. Program: Get the MD5 or SHA1 Hash of a File
      12. 17.11. Create a Directory
      13. 17.12. Remove a File or Directory
      14. 17.13. Rename a File or Directory
      15. 17.14. Move a File or Directory
      16. 17.15. Get the ACL of a File or Directory
      17. 17.16. Set the ACL of a File or Directory
      18. 17.17. Program: Add Extended File Properties to Files
      19. 17.18. Program: Create a Filesystem Hard Link
      20. 17.19. Program: Create a ZIP Archive
    2. 18. The Windows Registry
      1. 18.0. Introduction
      2. 18.1. Navigate the Registry
      3. 18.2. View a Registry Key
      4. 18.3. Modify or Remove a Registry Key Value
      5. 18.4. Create a Registry Key Value
      6. 18.5. Remove a Registry Key
      7. 18.6. Add a Site to an Internet Explorer Security Zone
      8. 18.7. Modify Internet Explorer Settings
      9. 18.8. Program: Search the Windows Registry
      10. 18.9. Get the ACL of a Registry Key
      11. 18.10. Set the ACL of a Registry Key
      12. 18.11. Work with the Registry of a Remote Computer
      13. 18.12. Program: Get Registry Items from Remote Machines
      14. 18.13. Program: Get Properties of Remote Registry Keys
      15. 18.14. Program: Set Properties of Remote Registry Keys
      16. 18.15. Discover Registry Settings for Programs
    3. 19. Comparing Data
      1. 19.0. Introduction
      2. 19.1. Compare the Output of Two Commands
      3. 19.2. Determine the Differences Between Two Files
      4. 19.3. Verify Integrity of File Sets
    4. 20. Event Logs
      1. 20.0. Introduction
      2. 20.1. List All Event Logs
      3. 20.2. Get the Newest Entries from an Event Log
      4. 20.3. Find Event Log Entries with Specific Text
      5. 20.4. Retrieve a Specific Event Log Entry
      6. 20.5. Find Event Log Entries by Their Frequency
      7. 20.6. Back Up an Event Log
      8. 20.7. Create or Remove an Event Log
      9. 20.8. Write to an Event Log
      10. 20.9. Access Event Logs of a Remote Machine
    5. 21. Processes
      1. 21.0. Introduction
      2. 21.1. List Currently Running Processes
      3. 21.2. Launch a Process
      4. 21.3. Stop a Process
      5. 21.4. Program: Invoke a PowerShell Expression on a Remote Machine
    6. 22. System Services
      1. 22.0. Introduction
      2. 22.1. List All Running Services
      3. 22.2. Manage a Running Service
      4. 22.3. Access Services on a Remote Machine
    7. 23. Active Directory
      1. 23.0. Introduction
      2. 23.1. Test Active Directory Scripts on a Local Installation
      3. 23.2. Create an Organizational Unit
      4. 23.3. Get the Properties of an Organizational Unit
      5. 23.4. Modify Properties of an Organizational Unit
      6. 23.5. Get the Children of an Active Directory Container
      7. 23.6. Create a User Account
      8. 23.7. Search for a User Account
      9. 23.8. Get and List the Properties of a User Account
      10. 23.9. Modify Properties of a User Account
      11. 23.10. Create a Security or Distribution Group
      12. 23.11. Search for a Security or Distribution Group
      13. 23.12. Get the Properties of a Group
      14. 23.13. Find the Owner of a Group
      15. 23.14. Modify Properties of a Security or Distribution Group
      16. 23.15. Add a User to a Security or Distribution Group
      17. 23.16. Remove a User from a Security or Distribution Group
      18. 23.17. List a User’s Group Membership
      19. 23.18. List the Members of a Group
      20. 23.19. List the Users in an Organizational Unit
      21. 23.20. Search for a Computer Account
      22. 23.21. Get and List the Properties of a Computer Account
    8. 24. Enterprise Computer Management
      1. 24.0. Introduction
      2. 24.1. Program: List Logon or Logoff Scripts for a User
      3. 24.2. Program: List Startup or Shutdown Scripts for a Machine
      4. 24.3. Enable or Disable the Windows Firewall
      5. 24.4. Open or Close Ports in the Windows Firewall
      6. 24.5. Program: List All Installed Software
      7. 24.6. Uninstall an Application
      8. 24.7. Manage Scheduled Tasks on a Computer
      9. 24.8. Retrieve Printer Information
      10. 24.9. Retrieve Printer Queue Statistics
      11. 24.10. Manage Printers and Print Queues
      12. 24.11. Determine Whether a Hotfix Is Installed
      13. 24.12. Program: Summarize System Information
      14. 24.13. Renew a DHCP Lease
      15. 24.14. Assign a Static IP Address
      16. 24.15. List All IP Addresses for a Computer
      17. 24.16. List Network Adapter Properties
    9. 25. Manage an Exchange 2007 Server
      1. 25.0. Introduction
      2. 25.1. Experiment with Exchange Management Shell
      3. 25.2. Automate Wizard-Guided Tasks
      4. 25.3. Manage Exchange Users
      5. 25.4. Manage Mailboxes
      6. 25.5. Manage Distribution Groups
      7. 25.6. Manage Transport Rules
      8. 25.7. Manage Outlook Web Access
    10. 26. Manage an Operations Manager 2007 Server
      1. 26.0. Introduction
      2. 26.1. Experiment with the Command Shell
      3. 26.2. Manage Operations Manager Agents
      4. 26.3. Schedule a Maintenance Window
      5. 26.4. Get, Install, and Uninstall Management Packs
      6. 26.5. Enable or Disable Rules
      7. 26.6. List and Start Tasks
      8. 26.7. Manage Alerts
  8. V. References
    1. A. PowerShell Language and Environment
      1. A.1. Commands and Expressions
      2. A.2. Comments
      3. A.3. Variables
      4. A.4. Booleans
      5. A.5. Strings
      6. A.6. Numbers
      7. A.7. Arrays and Lists
      8. A.8. Hashtables (Associative Arrays)
      9. A.9. XML
      10. A.10. Simple Operators
      11. A.11. Comparison Operators
      12. A.12. Conditional Statements
      13. A.13. Looping Statements
      14. A.14. Working with the .NET Framework
      15. A.15. Writing Scripts, Reusing Functionality
      16. A.16. Managing Errors
      17. A.17. Formatting Output
      18. A.18. Capturing Output
      19. A.19. Tracing and Debugging
      20. A.20. Common Customization Points
    2. B. Regular Expression Reference
    3. C. PowerShell Automatic Variables
    4. D. Standard PowerShell Verbs
    5. E. Selected .NET Classes and Their Uses
    6. F. WMI Reference
    7. G. Selected COM Objects and Their Uses
    8. H. .NET String Formatting
      1. H.1. String Formatting Syntax
      2. H.2. Standard Numeric Format Strings
      3. H.3. Custom Numeric Format Strings
    9. I. .NET DateTime Formatting
      1. I.1. Custom DateTime Format Strings
  9. Index
  10. About the Author
  11. Colophon
  12. Copyright

Product information

  • Title: Windows PowerShell Cookbook
  • Author(s): Lee Holmes
  • Release date: October 2007
  • Publisher(s): O'Reilly Media, Inc.
  • ISBN: 9780596528492