Outline
Module 1: Tool Design
This module explains how to design tools and units of automation that comply with native PowerShell usage patterns.
Lessons
- Tools do one thing
- Tools are flexible
- Tools look native
Lab 1: Designing a Tool
After completing this module, students will be able to:
- Describe the native shell patterns that a good tool design should exhibit
Module 2: Start with a Command
This module explains how to start the scripting process by beginning in the interactive shell console.
Lessons - Why start with a command?
- Discovery and experimentation
Lab 1: Designing a Tool
After completing this module, students will be able to:
- Describe the benefits of discovery and experimentation in the console
- Discover and experiment with existing commands in the console
Module 3: Build a Basic Function and Module
This module explains how to build a basic function and module, using commands already experimented with in the shell.
Lessons - Start with a basic function
- Create a script module
- Check prerequisites
- Run the new command
Lab 1: Designing a Tool
- Build a basic function and module
After completing this module, students will be able to:
- Build a basic function
- Create a script module
- Run a command from a script module
Module 4: Adding CmdletBinding and Parameterizing
This module explains how to extend the functionality of a tool, parameterize input values, and use CmdletBinding.
Lessons - About CmdletBinding and common parameters
- Accepting pipeline input
- Mandatory-ness
- Parameter validation
- Parmeter aliases
Lab 1: Designing a Tool
- Adding CmdletBinding and Parameterizing
After completing this module, students will be able to:
- Describe the purpose of CmdletBinding and list common parameters
- Parameterize a scripts input
- Define parameters as mandatory
- Define parameters as accepting pipeline input
- Define parameter validation
Module 5: Emitting Objects as Output
This module explains how to create tools that produce custom objects as output.
Lessons - Assembling information
- Constructing and emitting output
- Quick tests
Lab 1: Designing a Tool
- Emitting objects as output
After completing this module, students will be able to:
- Describe the purpose of object-based output
- Create and output custom objects from a function
Module 6: An Interlude: Changing Your Approach
This module explains how to re-think tool design, using concrete examples of how its often done wrong.
Lessons - Examining a script
- Critiquing a script
- Revising the script
Lab 1: No lab
- Click here to enter text.
After completing this module, students will be able to:
- Describe the native patterns that a good tool design should exhibit
- Redesign a script to meet business requirements and conform to native patterns
Module 7: Using Verbose, Warning, and Informational Output
This module explains how to use additional output pipelines for better script behaviors.
Lessons - Knowing the six channels
- Adding verbose and warning output
- Doing more with verbose output
- Informational output
Lab 1: Designing a Tool
- Using Verbose, Warning, and Informational Output
After completing this module, students will be able to:
- Describe the six output channels in the shell
- Write commands that use verbose, warning, and informational output
- Run commands with extra output enabled
Module 8: Comment-Based Help
This module explains how to add comment-based help to tools.
Lessons - Where to put your help
- Getting started
- Going further with comment-based help
- Broken help
Lab 1: Designing a Tool
After completing this module, students will be able to:
- Describe the purpose and construction of comment-based help
- Add comment-based help to a function
- Identify causes of broken comment-based help
Module 9: Handling Errors
This module explains how to create tools that deal with anticipated errors.
Lessons - 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
Lab 1: Designing a Tool
After completing this module, students will be able to:
- Describe the native patterns for handling errors in a command
- Add error handling to a command
- Run a command and observe error handling behaviors
Module 10: Basic Debugging
This module explains how to use native PowerShell script debugging tools.
Lessons - Two kinds of bugs
- The ultimate goal of debugging
- Developing assumptions
- Write-Debug
- Set-PSBreakpoint
- The PowerShell ISE
Lab 1: Designing a Tool
After completing this module, students will be able to:
- Describe the tools used for debugging in PowerShell
- Debug a broken script
Module 11: Going Deeper with Parameters
This module explains how to further define parameter attributes in a PowerShell command.
Lessons - Parameter positions
- Validation
- Multiple parameter sets
- Value from remaining arguments
- Help messages
- Aliases
- More CmdletBinding
Lab 1: No Lab
- Click here to enter text.
After completing this module, students will be able to:
- Describe the use of positional parameters
- Describe additional parameter validation methods
- Describe how to define multiple parameter sets
- Describe other parameter definition options
Module 12: Writing Full Help
This module explains how to create external help for a command.
Lessons - External help
- Using PlatyPs
- Supporting online help
- About topics
- Making your help updatable
Lab 1: Designing a Tool
After completing this module, students will be able to:
- Describe the advantages of external help
- Create external help using PlatyPS and Markdown
Module 13: Unit Testing Your Code
This module explains how to use Pester to perform basic unit testing.
Lessons - Sketching out the test
- Making something to test
- Expanding the test
- Going further with Pester
Lab 1: Designing a Tool
After completing this module, students will be able to:
- Describe the purpose of unit testing
- Write basic unit tests for PowerShell functions
Module 14: Extending Output Types
This module explains how to extend objects with additional capabilities.
Lessons - Understanding types
- The Extensible Type System
- Extending an object
- Using Update-TypeData
Lab 1: No Lab
- Click here to enter text.
After completing this module, students will be able to:
- Describe the purpose of the ETS
- Extend an existing object type
Module 15: Analyzing Your Script
This module explains how to use Script Analyzer to support best practices and prevent common problems.
Lessons - Performing a basic analysis
- Analyzing the analysis
Lab 1: Designing a Tool
After completing this module, students will be able to:
- Describe the use of Script Analyzer
- Perform a basic script analysis
Module 16: Publishing Your Tools
This module explains how to publish tools to public and private repositories.
Lessons - Begin with a manifest
- Publishing to PowerShell Gallery
- Publishing to private repositories
Lab 1: Designing a Tool
After completing this module, students will be able to:
- Describe the tool publishing process and requirements
- Publish a tool to a repository
Module 17: Basic Controllers: Automation Scripts and Menus
This module explains how to create controller scripts that put tools to use.
Lessons - Building a menu
- Using UIChoice
- Writing a process controller
Lab 1: Designing a Tool
After completing this module, students will be able to:
- Describe the purpose of basic controller scripts
- Write a simple controller script
Module 18: Proxy Functions
This module explains how to create and use proxy functions.
Lessons - A proxy example
- Creating the proxy base
- Modifying the proxy
- Adding or removing parameters
Lab 1: Designing a Tool
After completing this module, students will be able to:
- Describe the purpose of proxy functions
- Create a simple proxy function
Module 19: Working with XML Data
This module explains how to work with XML data in PowerShell.
Lessons - Simple: CliXML
- Importing native XML
- ConvertTo-XML
- Creating native XML from scratch
Lab 1: Designing a Tool
After completing this module, students will be able to:
- Describe the use of XML within PowerShell
- Use XML data within a PowerShell function
Module 20: Working with JSON Data
This module explains how to using JSON data in PowerShell.
Lessons - Converting to JSON
- Converting from JSON
Lab 1: Designing a Tool
After completing this module, students will be able to:
- Describe the use of JSON data within PowerShell
- Use JSON data within a PowerShell function
Module 21: Working with SQL Server Data
This module explains how to use SQL Server from within a PowerShell script.
Lessons - SQL Server terminology and facts
- Connecting to the server and database
- Writing a query
- Running a query
- Invoke-SqlCmd
- Thinking about tool design patterns
Lab 1: No Lab
- Click here to enter text.
After completing this module, students will be able to:
- Describe the use of SQL Server from within PowerShell
- Write and run SQL Server queries
- Design tools that use SQL Server for data storage
Module 22: Final Exam
This module provides a chance for students to use everything they have learned in this course within a practical example.
Lessons - Lab problem
- Break down the problem
- Do the design
- Test the commands
- Code the tool
Lab 1: Final Exam
Lab 2: Final Exam
After completing this module, students will be able to:
- Create PowerShell tools, using native design patterns, from business requirements.