M55039: Windows PowerShell Scripting and Toolmaking

5 Day Course
Hands On
Official Microsoft Curriculum
Code M55039

This course has been retired. Please view currently available Microsoft Windows Powershell Training Courses.


Hide all

Preparing for Scripting (3 topics)

  • Securing the Scripting Environment
  • Understanding Variables and Operators
  • Understanding Scripting Constructs and Scope

Parameterizing a Command (7 topics)

  • Designing Parameters
  • Implementing Parameters
  • Lab: Parameterizing a Command
  • Identify changeable values
  • Declare parameters
  • Use parameters in place of changeable values
  • Test the script

Creating a Script Module (8 topics)

  • Designing Script Modules
  • Implementing Script Modules
  • Lab: Creating a Script Module
  • Creating a Script Module
  • Saving the script module
  • Adding a module-level variable
  • Controlling module member visibility
  • Testing the script module

Handling Errors (8 topics)

  • Designing Error Handling
  • Implementing Error Handling
  • Lab: Handling Errors
  • Using the Try...Catch Construct
  • Handling Command Errors
  • Handling Non-Command Errors
  • Logging Errors to a File
  • Displaying Warning Messages

Writing Commands that Use Pipeline Input and Output (8 topics)

  • Understanding Pipeline Parameter Binding
  • Implementing Pipeline Parameter Input
  • Implementing Pipeline Parameter Input
  • Lab: Writing Commands that Use Pipeline Inout and Output
  • Adding Pipeline Input Capability to Parameters
  • Working with Pipeline Input
  • Creating Custom Output Objects
  • Outputting Objects to the Pipeline

Creating Hierarchical Command Output (9 topics)

  • Designing Complex Command Output
  • Implementing Complex Command Output
  • Using Object Hierarchies
  • Lab: Creating Hierarchical Command Output
  • Retrieving and Enumerating Data
  • Creating Child Objects
  • Creating the Parent Object
  • Displaying and Object Hierarchy
  • Persisting an Object Hierarchy

Debugging Scripts (5 topics)

  • Designing Scripts for Debugging
  • Implementing Script Debugging
  • Lab: Debugging Scripts
  • Using Write-Debug
  • Using PSBreakpoints

Customizing Default Formatting (7 topics)

  • Designing Formatting
  • Implementing Custom Formatting
  • Lab: Customizing Default Formatting
  • Adding a Custom Type Name to an Object
  • Creating a DefaultDisplayPropertySet Type Extension
  • Creating a Custom View
  • Adding Type Extensions and Views to Modules and Creating a Module Manifest

Adding Advanced Parameter Attributes and Command Documentation (7 topics)

  • Implementing Advanced Parameter Attribtues
  • Implementing Help Documentation
  • Lab: Adding Advanced Parameter Attributes and Command Documentation
  • Defining Aliases and Help Messages
  • Defining Parameter Validation
  • Adding Comment-Based Help
  • Writing a Command that Uses -Confirm and -WhatIf

Creating Controller Scripts (7 topics)

  • Designing Script Execution
  • Implementing a Controller Script
  • Lab: Creating Controller Scripts
  • Creating a Controller Script
  • Parameterizing a Controller Script
  • Testing a Controller Script
  • Debugging a Controller Script

Creating HTML-Based Reports (9 topics)

  • Creating Basic HTML Reports
  • Creating Enhanced HTML Reports
  • Lab: Creating Reports by using HTML
  • Creating Reports by using HTML
  • Converting Objects into HTML Fragments
  • Combining HTML Fragments
  • Adding Basic Formatting
  • Creating Enhanced HTML Fragments
  • Applying Conditional Formatting

Creating Basic Workflows (6 topics)

  • Understanding Workflows
  • Implementing Workflows
  • Lab: Creating Basic Workflows
  • Importing the PSWorkflow Module
  • Converting a Function to a Basic Worklfow
  • Parallelizing Commands

Working with XML Data (8 topics)

  • Understanding XML
  • Implementing XML Manipulation
  • Lab: Working with XML Data
  • Loading XML
  • Manipulating XML as an Object Hierarchy
  • Selecting XML Elements by using XPath
  • Modifying XML
  • Saving XML

Using Advanced Scripting Techniques (2 topics)

  • Using External Functionality
  • Adding Graphical User Interface Elements

Creating Proxy Functions (7 topics)

  • Designing Proxy Functions
  • Implementing Proxy Functions
  • Lab: Creating Proxy Functions
  • Generating a Proxy Function Template
  • Modifying the Template
  • Using the Proxy Function
  • Bypassing a Proxy Function

Building Tools in Windows PowerShell (7 topics)

  • Designing the Tool
  • Implementing the Tool
  • Testing the Tool
  • Lab: Building Tools in Windows PowerShell
  • Designing the Tool
  • Implementing the Tool
  • Testing the Tool


  • Experience in administering Windows server and client computers
  • Experience in running interactive Windows PowerShell commands from the command prompt
  • Course M10961 is strongly recommended as a pre-requisite to this course

Course PDF