Microsoft Learning Logo is a registered trademark of Microsoft. All rights reserved.
Windows PowerShell Scripting and Toolmaking
Schedule
Start | End | Duration | Location | Details |
---|
Course Details
Windows PowerShell Scripting and Toolmaking
Course code: 55309
Duration: 5 Days
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
Course Description:
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.
Course Objectives:
• Describe the correct patterns for building modularized tools in Windows PowerShell
• Build highly modularized functions that comply with native PowerShell patterns
• Build controller scripts that expose user interfaces and automate business processes
Intended Audience:
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.
Course Outline:
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