Book Image

Mastering PowerShell Scripting - Fourth Edition

By : Chris Dent
5 (1)
Book Image

Mastering PowerShell Scripting - Fourth Edition

5 (1)
By: Chris Dent

Overview of this book

PowerShell scripts offer a convenient way to automate various tasks, but working with them can be daunting. Mastering PowerShell Scripting takes away the fear and helps you navigate through PowerShell's capabilities.This extensively revised edition includes new chapters on debugging and troubleshooting and creating GUIs (online chapter). Learn the new features of PowerShell 7.1 by working with parameters, objects, and .NET classes from within PowerShell 7.1. This comprehensive guide starts with the basics before moving on to advanced topics, including asynchronous processing, desired state configuration, using more complex scripts and filters, debugging issues, and error-handling techniques. Explore how to efficiently manage substantial amounts of data and interact with other services using PowerShell 7.1. This book will help you to make the most of PowerShell's automation features, using different methods to parse data, manipulate regular expressions, and work with Windows Management Instrumentation (WMI).
Table of Contents (26 chapters)
24
Other Books You May Enjoy
25
Index

Debugging in the console

The PowerShell debugger allows code execution to be paused and the state of a script to be analyzed at a specific point.

These points are known as breakpoints and are set using the Set-PSBreakpoint command.

PowerShell describes the following operations in the about_Debuggers help file:

Get-Help about_Debuggers

You can use the Set-PSBreakpoint command to set a breakpoint when a command is run, when a variable is used, or on a specific line in a saved script.

Setting a command breakpoint

Setting a breakpoint on a command will trigger the debugger when that command is run.

In the next example, a breakpoint is created that triggers when the Get-Process command runs. As Get-Process is inside a loop, it will be possible to inspect the state of variables inside the loop in the debugger:

Set-PSBreakpoint -Command Get-Process
$names = 'powershell', 'pwsh', 'code'
foreach ($name in $names) {
    Get-Process...