TLG Learning Bellevue / Seattle 425-460-2200 or 800-460-2298
TLG Learning

Course Outline


55039 - Windows Powershell Scripting and Toolmaking


This 5-day instructor-led is intended for IT professionals who are interested in furthering their skills in Windows PowerShell and administrative automation. The course assumes a basic working knowledge of PowerShell as an interactive command-line shell, and teaches students the correct patterns and practices for building reusable, tightly scoped units of automation.


Experience at basic Windows administration, using Windows PowerShell to query and modify system information, using Windows PowerShell to discover commands and their usage, and using WMI and/or CIM to query system information


This course is intended for administrators in a Microsoft-centric environment who want to build reusable units of automation, automate business processes, and enable less-technical colleagues to accomplish administrative tasks.


5 Days, $2995


Lesson 1 : Tool Design

Tools do one thing
Tools are flexible
Tools look native

Lesson 2 : Start with a Command

Why start with a command?
Discovery and experimentation

Lesson 3 : Build a Basic Function and Module

Start with a basic function
Create a script module
Check prerequisites
Run the new command

Lesson 4 : Adding CmdletBinding and Parameterizing

About CmdletBinding and common parameters
Accepting pipeline input
Parameter validation
Parmeter aliases

Lesson 5 : Emitting Objects as Output

Assembling information
Constructing and emitting output
Quick tests

Lesson 6 : An Interlude: Changing Your Approach

Examining a script
Critiquing a script
Revising the script

Lesson 7 : Using Verbose, Warning, and Informational Output

Knowing the six channels
Adding verbose and warning output
Doing more with verbose output
Informational output

Lesson 8 : Comment-Based Help

Where to put your help
Getting started
Going further with comment-based help
Broken help

Lesson 9 : Handling Errors

Understanding errors and exceptions
Bad handling
Two reasons for exception handling
Handling exceptions in our tool
Capturing the actual exception
Handling exceptions for non-commands
Going further with exception handling
Deprecated exception handling

Lesson 10 : Basic Debugging

Two kinds of bugs
The ultimate goal of debugging
Developing assumptions
The PowerShell ISE

Lesson 11 : Going Deeper with Parameters

Parameter positions
Multiple parameter sets
Value from remaining arguments
Help messages
More CmdletBinding

Lesson 12 : Writing Full Help

External help
Using PlatyPs
Supporting online help
“About” topics
Making your help updatable

Lesson 13 : Unit Testing Your Code

Sketching out the test
Making something to test
Expanding the test
Going further with Pester

Lesson 14 : Extending Output Types

Understanding types
The Extensible Type System
Extending an object
Using Update-TypeData

Lesson 15 : Analyzing Your Script

Performing a basic analysis
Analyzing the analysis

Lesson 16 : Publishing Your Tools

Begin with a manifest
Publishing to PowerShell Gallery
Publishing to private repositories

Lesson 17 : Basic Controllers: Automation Scripts and Menus

Building a menu
Using UIChoice
Writing a process controller

Lesson 18 : Proxy Functions

A proxy example
Creating the proxy base
Modifying the proxy
Adding or removing parameters

Lesson 19 : Working with XML Data

Simple: CliXML
Importing native XML
Creating native XML from scratch

Lesson 20 : Working with JSON Data

Converting to JSON
Converting from JSON

Lesson 21 : Working with SQL Server Data

SQL Server terminology and facts
Connecting to the server and database
Writing a query
Running a query
Thinking about tool design patterns

Lesson 22 : Final Exam

Lab problem
Break down the problem
Do the design
Test the commands
Code the tool


= "Guaranteed to Run"
ILT - Instructor-Led Training | MLT - Mentor-Led Training | Anywhere LIVE OLT - Live Online Training | Bellevue LIVE OLT - Live Online Training

Find Courses
Search Courses

Course Topics
Course Schedules