55039-B: Windows PowerShell Scripting and Toolmaking

Course Modality

Instructor-led (classroom)

Course Level

Advanced

Course Time

5 days

Course Language

English

Course Overview

This three- to five-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.

Prerequisites

Before attending this course, students must have:

  • 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

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.

Why The DataTech Labs ?

Self-Paced Online Video

A 360-degree learning approach that you can adapt to your learning style

A 360-degree learning

Engage and learn more with these live and highly-interactive classes alongside your peers

24/7 Teaching Assistance

24/7 Teaching Assistance Keep engaged with integrated teaching

Online Practice Labs

Projects provide you with sample work to show prospective employers.

Applied Projects

Real-world projects relevant to what you’re learning throughout the program

Learner Social Forums

A support team focused on helping you succeed alongside a peer community

Skill Covered

After completing this course, students will be able to:

  • 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
  • Manage data in a variety of formats
  • Write automated tests for tools
  • Debug tools

Get In Touch

Course Curriculum

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 : Designing a Tool

  • Design a tool

After completing this module, students will be able to:

  • Describe the native shell patterns that a good tool design should exhibit

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 : Designing a Tool

  • Start with a command

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

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 : 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

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 : 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 script’s input

  • Define parameters as mandatory

  • Define parameters as accepting pipeline input

  • Define parameter validation

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 : 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

An Interlude: Changing Your Approach

This module explains how to re-think tool design, using concrete examples of how it’s often done wrong.

Lessons

  • Examining a script

  • Critiquing a script

  • Revising the script

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

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 : 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

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 : Designing a Tool

  • Comment-based help

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

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 : Designing a Tool

  • Handling errors

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

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 : Designing a Tool

  • Basic debugging

After completing this module, students will be able to:

  • Describe the tools used for debugging in PowerShell

  • Debug a broken script

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

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

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 : Designing a Tool

  • Writing full help

After completing this module, students will be able to:

  • Describe the advantages of external help

  • Create external help using PlatyPS and Markdown

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 : Designing a Tool

  • Unit testing your code

After completing this module, students will be able to:

  • Describe the purpose of unit testing

  • Write basic unit tests for PowerShell functions

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

After completing this module, students will be able to:

  • Describe the purpose of the ETS

  • Extend an existing object type

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 : Designing a Tool

  • Analyzing your script

After completing this module, students will be able to:

  • Describe the use of Script Analyzer

  • Perform a basic script analysis

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 : Designing a Tool

  • Publishing your tools

After completing this module, students will be able to:

  • Describe the tool publishing process and requirements

  • Publish a tool to a repository

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 : Designing a Tool

  • Basic controllers

After completing this module, students will be able to:

  • Describe the purpose of basic controller scripts

  • Write a simple controller script

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 : Designing a Tool

  • Proxy functions

After completing this module, students will be able to:

  • Describe the purpose of proxy functions

  • Create a simple proxy function

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 : Designing a Tool

  • Working with XML

After completing this module, students will be able to:

  • Describe the use of XML within PowerShell

  • Use XML data within a PowerShell function

Working with JSON Data

This module explains how to using JSON data in PowerShell.

Lessons

  • Converting to JSON

  • Converting from JSON

Lab : Designing a Tool

  • Working with JSON data

After completing this module, students will be able to:

  • Describe the use of JSON data within PowerShell

  • Use JSON data within a PowerShell function

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

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

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 : Final Exam

  • Lab one

Lab : Final Exam

  • Lab two

After completing this module, students will be able to:

  • Create PowerShell tools, using native design patterns, from business requirements.

Reviews

Get in touch, enquire now!


By submitting this form, I consent to the processing of the personal data that I provide The Data Tech Labs Inc. in accordance with and as described in the Privacy Policy.

© 2020 The Data Tech Labs Inc. All rights reserved.

TDTL-arrow
[glt language="Arabic" label="Arabic" image="yes" text="yes" image_size="24"]
[glt language="English" label="English" image="yes" text="yes" image_size="24"]
[glt language="French" label="French" image="yes" text="yes" image_size="24"]
[glt language="German" label="German" image="yes" text="yes" image_size="24"]
[glt language="Hindi" label="Hindi" image="yes" text="yes" image_size="24"]
[glt language="Marathi" label="Marathi" image="yes" text="yes" image_size="24"]
[glt language="Spanish" label="Spanish" image="yes" text="yes" image_size="24"]

Microsoft Power Platform App Maker

Designing & Implementing Azure AI Solution

Microsoft Azure Administrator

Developing Solutions For Microsoft Azure

Microsoft Azure Architect Design Exam

Implementing Azure Data Solution

Administering Relational Databases On Microsoft Azure