MS-55039 - Windows PowerShell Scripting and Toolmaking

This five-day instructor-led course is intended for IT Professionals who have a working knowledge of Windows PowerShell 3.0 techniques and technologies, and who want to build reusable tools by using Windows PowerShell 3.0. Students of this course may administer a wide variety of server and client products and technologies that offer Windows PowerShell integration, including Microsoft Exchange Server, Microsoft Windows Active Directory Domain Services, Microsoft SharePoint Server, and more. This course focuses on the Windows PowerShell scripting language, and on the concepts and techniques needed to produce reusable, professional tools.

Student Testimonials

Instructor did a great job, from experience this subject can be a bit dry to teach but he was able to keep it very engaging and made it much easier to focus. Student
Excellent presentation skills, subject matter knowledge, and command of the environment. Student
Instructor was outstanding. Knowledgeable, presented well, and class timing was perfect. Student

Click here to print this page »

Prerequisites

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

Detailed Class Syllabus


Module 1: Tool Design


Tools do one thing
Tools are flexible
Tools look native

Module 2: Start with a Command


Why start with a command?
Discovery and experimentation

Module 3: Build a Basic Function and Module


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

Module 4: Adding CmdletBinding and Parameterizing


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

Module 5: Emitting Objects as Output


Assembling information
Constructing and emitting output
Quick tests

Module 6: An Interlude: Changing Your Approach


Examining a script
Critiquing a script
Revising the script

Module 7: Using Verbose, Warning, and Informational Output


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

Module 8: Comment-Based Help


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

Module 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

Module 10: Basic Debugging


Two kinds of bugs
The ultimate goal of debugging
Developing assumptions
Write-Debug
Set-PSBreakpoint
The PowerShell ISE

Module 11: Going Deeper with Parameters


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

Module 12: Writing Full Help


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

Module 13: Unit Testing Your Code


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

Module 14: Extending Output Types


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

Module 15: Analyzing Your Script


Performing a basic analysis
Analyzing the analysis

Module 16: Publishing Your Tools


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

Module 17: Basic Controllers: Automation Scripts and Menus


Building a menu
Using UIChoice
Writing a process controller

Module 18: Proxy Functions


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

Module 19: Working with XML Data


Simple: CliXML
Importing native XML
ConvertTo-XML
Creating native XML from scratch

Module 20: Working with JSON Data


Converting to JSON
Converting from JSON

Module 21: Working with SQL Server Data


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

Module 22: Final Exam


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