Vault™ > POWER400: Advanced PowerShell

Access to the Vault™ requires an active Microsoft Live Subscription.

Login Buy Subscription

POWER400: Advanced PowerShell

By Jason Yoder
3 Days
Live Class Recording
April 15, 2024
Course Description

This course is a continuation of MOC 10961 or AZ-040, Automating Administration with Windows PowerShell.  We will be taking a deep dive into the development of PowerShell cmdlets and modules. Time will be spent on the theory of how to design your cmdlets as well as the proper structure of the programming code to facility cmdlets that work with the PowerShell piping in keeping with community standards.  We will also be exploring how to place a graphical user interface on top of our PowerShell code so we can build tools that are available to everybody. This course will feature both hands on labs and challenged exercises to help you practice and the skills presented in class and develop you coding skills as we work with both Windows PowerShell and PowerShell 7 utilizing VSCode as our development environment.

Course Outline

Module 1 – Getting to Know Objects

This module builds the foundation of how PowerShell represents information.  We will be creating our own object as the output of or code, keeping in line with PowerShell best practices.

Lessons:

  • Properties
  • Methods
  • Events

Labs:

  • Lab 1 – Discovering Objects

 

Module 2 – PowerShell Functions

We will discover how functions can be use to modularize your code to hep making testing and development easier, but also advancing your functions to become PowerShell cmdlets that can accept information inside of the PowerShell Pipeline.

Lessons:

  • Building a basic function
  • Passing data
  • How to use functions
  • Advanced parameterization

Labs:

  • Lab 2A – Using private functions
  • Lab 2B – Working with Parameters
  • Lab 2C – Working with switch parameters
  • Lab 2D – PowerShell Pipeline ByValue
  • Lab 2E – PowerShell Pipeline ByPropertyName
  • Lab 2F – Write code to Accept Input ByProperyName

 

Module 3 – Creating Output

Now that we have the ability to create PowerShell cmdlets, we need to be able to create output that is accepted by other cmdlets.  We will be creating customize objects.

Lessons:

  • Why create custom objects?
  • Ways to create objects
  • Naming your objects
  • Accepting your objects in the pipeline

Labs:

  • Lab 3A – Creating custom objects
  • Lab 3B – Accepting your objects in the pipeline

 

Module 4 – Advanced PowerShell Modules

This lesson is about polishing your PowerShell models to a professional level.  We will take control of the output system to control what is displayed as well as ensure you code follows community standards.

Lesson:

  • How to create a module
  • Module manifest
  • Formatting file
  • Reviewing your code

Labs:

  • Lab 4A – Complete the formatting file

 

Module 5 – Advanced debugging and error handling

Code never works the first time.  We will focus on techniques to help you discover why your code is not working correctly and how to handle errors properly when they occur.

Lessons:

  • VSCode debugging
  • Try / Catch / Finally
  • How PowerShell handles errors
  • Handling specific errors

Labs:

  • Module 5 Lab A – Custom Error Handling

 

Module 6 – Final coding project

In this exercise, you will create cmdlets that work together to parse data from a threat intelligence provider to recover data that you need to investigate a security incident.  You will use the cumulative knowledge they you learned in the proceeding lessons to complete this assignment.

 

Module 7 – Graphical Interfaces

PowerShell has great potential not only for the technical users, but for the non-technical users as well.  This module is about how to put a graphical interface on top of your PowerShell code to make it usable by all.  We will cover the more popular graphical control elements and sharpen our skills through a series of challenges.

Lessons:

  • Installing the support software
  • Events
  • Forms
  • Label
  • Textboxes
  • Buttons
  • Radio buttons
  • Check boxes
  • Data grid views
  • Scopes of memory
  • Form projects
  • Deploying GUIs.

 

Course Content
Introduction
Introduction
Module 1 u2013 Getting to Know Objects
Getting to Know Objects
Getting to Know Objects (Continuation after challenge)
Getting to Know Objects (Continuation after challenge )
Getting to Know Objects (Continuation after lab)
Module 2 u2013 PowerShell Functions
PowerShell Functions
PowerShell Functions (Continuation after lab)
PowerShell Functions (Continuation after Lab)
PowerShell Functions (Continuation after lab)
PowerShell Functions (Continuation next day)
PowerShell Functions (Continuation after break)
PowerShell Functions (Continuation after lab)
Module 3 u2013 Creating Output
Creating Output
Creating Output (Continuation after break)
Creating Output (Continuation after Lab)
Module 4 u2013 Advanced PowerShell Modules
Advanced PowerShell Modules
Advanced PowerShell Modules (Continuation after lab)
PowerShell Script Analyzer
Discussion
PowerShell Spell Checker
Module 5 u2013 Advanced debugging and error handling
Advanced debugging and error handling
Installation and Setup for Module 7
Installation and Setup for Module 7
Module 5 u2013 Advanced debugging and error handling
Advanced debugging and error handling (Continuation after lab / next day)
Advanced debugging and error handling (Continuation after lab)
Module 6 u2013 Final coding project
Final coding project
Final coding project (Continuation after Lab)
Module 7 - Graphical Interfaces
Graphical Interfaces Form Projects
Module 7 u2013 Graphical Interfaces - Labels
Graphical Interfaces challenges (Continuation after Forms challenge)
Module 7 u2013 Graphical Interfaces challenges - Input from users
Graphical Interfaces challenges (Continuation after Label challenge)
Module 7 u2013 Graphical Interfaces challenges - Calculator
Graphical Interfaces challenges (Continuation after Event challenge)
Module 7 u2013 Graphical Interfaces challenges - Radio Button
Graphical Interfaces challenges (Continuation after Calculator challenge)
Graphical Interfaces challenges (Continuation after break)
Module 7 u2013 Graphical Interfaces challenges - Checkbox
Graphical Interfaces challenges (Continuation after Radio Button challenge)
Module 7 u2013 Graphical Interfaces challenges - DataGridView
Graphical Interfaces challenges (Continuation after Checkbox challenge)
Module 7 u2013 Graphical Interfaces challenges
Graphical Interfaces challenges (Continuation after DataGridView challenge)
Scope of Memory in PowerShell Studio
Final coding project
Adding a form and GUI to project - converting to executable