
Discover the origins and purpose of Windows PowerShell, its system requirements, and how to open and configure the console host and ISE. Identify version information and common shell mistakes.
Explore Windows PowerShell as an object-oriented engine for administrative automation, usable as a CLI or hosted in GUI applications. Learn how commands—commandlets, functions, and workflows—build flexible, customizable automation.
Explore PowerShell versions from 1.0 to 5, including the Windows Management Framework and WinRM, noting backward compatibility and that PowerShell 5 is default on Windows Server 2016.
Learn about the two host applications for Windows PowerShell, the console and the ISE, and how each supports interactive use, scripting, and transcript capture.
Learn to determine your PowerShell version using the $PSVersionTable in Windows PowerShell, and run PowerShell.exe -version 2.0 to reveal the 2.0 version when needed.
Identify the correct Windows PowerShell host (64-bit or 32-bit) on your system, and always run the shell as administrator, checking for Administrator in the title.
Master practical PowerShell tips for faster access, version checks, host settings, and customization, including psVersionTable, host variables with private data, and configuring PowerShell on the taskbar.
Configure the console by selecting a true type font, adjusting font size and colors, sizing the window and layout to avoid horizontal scrolling, and enabling Quick Edit for mouse copy-paste.
Configure the Windows PowerShell console by adjusting font and layout, practice copying and pasting text, use arrow keys and F7 for command history, and start a transcript with start-transcript.
Open the Windows PowerShell ISE, arrange script and console panes, switch layouts from one above the other to side-by-side or single-pane views, adjust font size, and apply a presentation theme.
Configure Windows PowerShell console and ISE appearance and layout, then run as administrator, pin the icon, set font and colors, resize the window, and start a transcript on C drive.
Configure the Windows PowerShell console as administrator, ensure 64-bit, pin to the taskbar, and adjust font, colors, and layout. Start a transcript to c:\temp\text1.txt to log commands.
Open the 64-bit Windows PowerShell ISE as administrator, use show script pane maximized and show command add-on to switch to a single-pane view, hide panes, and adjust the font size.
Compare the console and PowerShell ISE, noting the console supports transcripts and multi-line commands that the ISE lacks; adjust ISE colors to improve visibility of braces and punctuation.
Explore how Windows PowerShell uses familiar commands such as dir, ls, and cd, with aliases for get-childitem, and learn the syntax differences for accurate file management.
Learn how to access Windows PowerShell help with get-help, help, and man, view content in console or ISE, use -showwindow and -example for examples, and obtain online or updatable help.
Explore how to access command help in PowerShell, view dir and get-childitem with examples, online help, and floating window demos, including paged output, dash recurse switch, and show window.
Discover how to find and use Windows PowerShell commands with get-command and get-help, and explore module discovery and auto-loading with examples like setting an IP address and listing mailboxes.
Discover practical PowerShell techniques to locate commands, using help html to find html conversion, and get-command -verb new to list commands that create items. Explore finding commands for restarting a computer, filtering by ipv4, and reading event logs locally or remotely with a computer name parameter using wildcards.
Explore how to discover and use PowerShell commands, including creating an IP address with new net ip address and retrieving mailboxes with get mailbox, via get command and wildcard searches.
Learn to interpret help file syntax to quickly uncover a command's capabilities, including two parameter sets, mandatory log-name, positional parameters, and full help.
Learn to read PowerShell help files, interpret syntax, and apply best practices by using mandatory and positional parameters, parameter sets, and full help outputs.
Discover how PowerShell uses online help hosted by Microsoft and how to fetch and save module help with update-help and save-help, including offline sources and language defaults.
Master PowerShell's help system using get-help, get-command, and pipe. Learn to update and save help files across modules, configure UI culture, and apply group policy for the default source path.
Discover how to navigate PowerShell help topics with wildcards, view about topics and aliases, and access event log and beep help through an interactive demo.
Learn how to access, update, and save PowerShell help with update-help, save-help, and about topics, ensuring up-to-date and offline documentation for installed modules.
Learn to run PowerShell commands with full syntax, provide multiple values to a parameter, and use shortened syntax. Explore the show-command tool and execute commands that change system configuration.
Master the full formal syntax of Windows PowerShell commands, including verb-noun names, dash-prefixed parameters, and tab-completion to verify syntax and avoid common mistakes.
Discover how to specify multiple values for a PowerShell parameter using double square bracket notation, comma-separated lists, parasentical commands reading computers.txt with get-content, and passing a variable to the command.
Explore passing multiple values to PowerShell parameters using comma separated lists and variables. Learn to use parenthetical commands and Get-Content for computers.txt with the computer name parameter.
Explore shortened command syntax in Windows PowerShell, including aliases, positional parameters, and tab completion, and learn best practices to use full command and parameter names for readability.
Shows how to use show-command to display a graphical dialog box for a PowerShell command, listing parameter sets on tabs and enabling quick copying or running the command.
Demonstrates using show-command to explore get-service parameters, fill values, and copy the command to the clipboard before pasting it into the Windows PowerShell console to run.
Demonstrates using what-if and confirm parameters and the confirmPreference variable to control stopping services and processes, suppress prompts, and verify changes with get-service and help.
Discover and run basic Windows PowerShell commands, learn about new PowerShell features, and use help and command discovery to complete administrative tasks in a hands-on lab.
Discover and run basic Windows PowerShell commands to complete administrative tasks, exploring help and commands like Get Command, Resolve DNS Name, Setnet Adapter, and Enable PS Scheduled Task.
Review common group policy issues, including script deployment failures caused by read permissions and security filtering. Learn how slow link handling and domain-level enforcement affect policy application.
Explore the PowerShell pipeline, mastering how to select, sort, measure, convert, export, import, filter, and enumerate objects to use Windows PowerShell more effectively.
Explore the Windows PowerShell pipeline in part one, learning to run multiple commands and describe pipeline output. Discover and display object members while understanding issues when commands yield object types.
Explore how to chain commands in a pipeline, piping get-service output to outfile or redirecting with the greater-than operator to service-list.txt.
Learn how PowerShell outputs objects instead of text, with service objects exposing properties like name, display name, and status. Compare object-based pipelines to text-based shells and avoid brittle text parsing.
Examine the properties, methods, and events of PowerShell objects, and learn to use get-member to list members and type names, while understanding default property display and safety cautions.
Learn to run and pipe PowerShell commands, use Get-Service and Get-Process, explore Get-Member, and view outputs with Out-GridView, including inspecting object types and the max speed property of net-adapter.
Master how PowerShell pipelines handle multiple object kinds, such as fileInfo and directoryInfo, and use getMember without clutter.
Learn to manipulate objects in the PowerShell pipeline by sorting, selecting, and measuring properties; display subsets, customize properties for display, and create custom properties for display.
Learn how to use select-object to create calculated properties with hash tables, specifying label, name, and expression, using psitem, and format results (memory in MB) with dash f.
Practice PowerShell to display current date, day of year, installed hotfix details, enabled firefall rules, and network neighbors and dns cache data, sorted by name and state.
Use PowerShell lab 1 tasks to display day of year with get-date and list hotfixes with get-hotfix. Filter enabled firewall rules, network neighbors, and DNS cache with select-object and sort-object.
Explore how Windows PowerShell converts pipeline objects to HTML, CSV, or XML via convert-to and export, and how out-file writes pipeline output to external storage.
Understand importing as a two-step process that reads external data formats into PowerShell objects, preserving fidelity with csv and xml, and routes data through the pipeline for manipulation.
Convert management data into HTML, CSV, XML, and pipe-delimited formats using PowerShell in Windows Server; generate and view process and event-log reports, including procreport.html, sysevents.csv, and services.xml.
Learn to filter objects out of the PowerShell pipeline with flexible criteria, mastering major comparison operators and both basic and advanced syntax to optimize filtering performance.
Explore filtering in PowerShell by using the var-object syntax and a range of comparison operators, including case-insensitive and wildcard options, with practical examples like get service | var status-eq running.
Explore advanced PowerShell filter syntax, using $PSItem and $character underscore, with single or multiple criteria, and learn to optimize by filtering left in the pipeline.
Explore PowerShell pipeline basics and object enumeration in this course overview. Learn how Windows PowerShell passes objects between commands and the two techniques used to construct complex command lines.
Explore enumeration in PowerShell with ForEach-Object, using basic and advanced syntax to run methods, access properties, and script blocks on objects, including examples like encrypting files and listing processes.
This lab 1 session guides you through PowerShell and Windows Server tasks, including enumerating certificates and their key algorithms, creating random numbers, and invoking WMI methods.
Enumerate certificates and their key algorithms using get-childitem sort recurse, get-member, and forEach getKeyAlgorithm; generate 100 random numbers with getRandom and setSeed; reboot using getWmiObject.
Explore the first PowerShell pipeline technique, ByValue, and learn how commands receive input, pass data with ByDefault, override the pipeline with manual parameters, and use parenthetical commands.
Master how manually specifying a parameter stops pipeline input binding in PowerShell, and see examples with Get-Content, Get-Service, and Get-Process to illustrate pipeline binding versus parasyntical input.
Explore the ByPropertyName technique for passing data in the Windows PowerShell pipeline, learn to display object properties, identify parameters that accept ByPropertyName input, and expand properties into simple values.
Explore how PowerShell switches from ByValue to ByPropertyName for pipeline input, inspect object properties, and import CSV data to create new AD users with ByPropertyName parameters.
Expand property contents in PowerShell by using parenthetical commands and the expand-property option to extract strings from objects, enabling domain-wide commands like Get-Process or Get-Service with a computer name parameter.
Preview PowerShell pipeline behavior, predict command interactions, and write pipeline-enabled commands to enumerate services, query domain computers, and manage event logs without executing them.
Explore lab 2 tasks on PowerShell pipeline input, including displaying recent 50 system event log entries and using commands like GetService, GetContent, RestartComputer, TestConnection, and SetService with ByPropertyName and ByValue.
Learn to enumerate objects in the pipeline to work with one object at a time. Then explain the purpose of enumeration using basic syntax and advanced syntax.
PowerShell providers act as adapters that make external data stores resemble a disk drive within Windows PowerShell, enabling dynamic, folder-like items and properties managed with familiar commands, such as get-child-item.
Learn to access and explore PowerShell providers in Windows Server, view capabilities with get-psprovider, load modules like Active Directory, and use provider help and transactions, filtering, and credentials.
Explore PS drives and manage a file system by navigating a PS drive, creating and modifying items and item properties using a PS provider.
Master PS drives and PS providers by creating items, mappings, and properties, then configure a registry key and run entries across hkey_current_user and hkey_local_machine, and adjust WSMan remoting settings.
Explore configuring a PS environment with PSDrives and PSProviders, creating folders, PS drives, registry keys, and settings, and adjusting WS-Management settings using New-Item, New-PSDrive, and related cmdlets.
Advance your PowerShell skills in this part two course, exploring how to enumerate objects in the pipeline and how Windows PowerShell passes objects between commands using two techniques.
Enumerate objects in the pipeline to work with one object at a time using basic and advanced syntax.
Master advanced formatting options in Windows PowerShell, including creating custom list entries and colons, sorting and grouping table output, and distinguishing between select object and format cmdlets.
Learn how PowerShell format commands use calculated properties and keys like N, E, and FormatString with select-object, and how formattable supports groupby, align, and widths for sorted or grouped output.
Format command output in powershell to generate polished system information, process tables, tcp/ip routes, and file/event log reports, using calculated properties and redirection.
Review course takeaways and lab review, noting sendMailMessage attachments, OutGridView for end-user output, and best practices for formatting versus reporting with SQL Server and SSRS.
Explore PowerShell pipelines by enumerating objects and passing them between commands, and learn the two techniques PowerShell uses to transfer objects, enabling you to build more useful, complex commands.
Discover how to enumerate objects in the PowerShell pipeline to work with one object at a time, using basic and advanced WMI and CIM syntax.
Explore how the repository organizes namespaces and classes, how instances provide properties and methods, and how to locate online documentation for WMI and SIM using internet searches.
Learn to work with PowerShell drives, navigate a PS Drive, and create or modify items and properties, with context on querying data using WMI and CIM.
Learn to list WMI namespaces and classes with Windows PowerShell, including local and remote queries using root-simv2, get-wmiobject, and sorting, plus tab completion and sim versus win32 prefixes.
Query remote computers with WMI and SIEM using -computername and -credential for connections. Create persistent SIEM sessions to improve performance when querying multiple classes.
Explore discovering and using methods on repository objects in PowerShell, using get-member to reveal the change method on service classes, and consult online documentation for required arguments.
Query management information across local and remote computers using WMI and CIM, then use SIEM commands to retrieve IP addresses, OS version, hardware, and services.
Build mastery of PowerShell and Windows Server labs by displaying the date, listing hotfixes, filtering firewall rules, enumerating network neighbors, and inspecting the DNS client cache with core cmdlets.
Review lab takeaways on WMI and SIEM, their protocol differences and remoting, common issues, and practical tips like using SIEM commands and PowerShell Scriptomatic.
Explore Windows PowerShell execution policies—restricted, all-signed, remote-signed, and unrestricted—and learn how to check, change, and test policies using getExecutionPolicy, setExecutionPolicy, and registry edits.
Learn variables as temporary storage for objects and arrays, and how to create, manage, and use them for calculations in Windows PowerShell.
Master setting and manipulating variables in Windows PowerShell using set-variable and related cmdlets, including get-variable, clear-variable, and remove-variable, with scope, include/exclude, pass-through, and what-if options.
Read inputs from the command line with the read-host cmdlet, using the prompt parameter and asSecureString to mask passwords, and see how password values become system.security.secureString objects within script scope.
Learn PowerShell operators, including arithmetic, assignment, comparison, logical, unary, and special operators, with practical examples and precedence rules for evaluating expressions.
Discover how Windows PowerShell uses logical operators (and, or, not) and unary operators to test conditions, and see pre- and post-increment behavior with practical examples.
Test commands in the Windows PowerShell console with test values, then parameterize changing values using a param block and commandletbinding to fetch security event log entries.
Learn to move from command to script in PowerShell by parameterizing disk queries, configuring execution policy, and building get diskinfo.ps1 with computer name and drive type parameters.
Explore how PowerShell scopes containerize shell elements, including global, script, and function scopes, and test a function inside a script by editing and running it.
Master PowerShell debugging by using write debug and the debug parameter, pause execution, suspend scripts, view variables, and rely on inline documentation to start debugging immediately.
Move the Lab B task from script to function to module by wrapping code in getDiskInfo, packaging as a script module, testing with localhost, and adding debugging breakpoints in MyTools.
Exercise1-Task1.ps1
<#
.SYNOPSIS
Retrieves disk space information.
.DESCRIPTION
Retrieves disk information from a single computer.
.PARAMETER ComputerName
The name of the computer to query.
.PARAMETER DriveType
The type of drive to query. Defaults to 3,
representing local fixed disks.
.EXAMPLE
.\Get-DiskInfo -ComputerName localhost -Verbose
#>
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)][string]$ComputerName,
[int]$DriveType = 3
)
Write-Verbose "Getting drive types of $DriveType from $ComputerName"
Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=$DriveType" -ComputerName $ComputerName |
Select-Object -Property @{n='DriveLetter';e={$PSItem.DeviceID}},
@{n='FreeSpace(MB)';e={"{0:N2}" -f ($PSItem.FreeSpace / 1MB)}},
@{n='Size(GB)';e={"{0:N2}" -f ($PSItem.Size / 1GB)}},
@{n='FreePercent';e={"{0:N2}%" -f ($PSItem.FreeSpace / $PSItem.Size * 100)}}
Exercise1-Task2.ps1
function Get-DiskInfo {
<#
.SYNOPSIS
Retrieves disk space information.
.DESCRIPTION
Retrieves disk information from a single computer.
.PARAMETER ComputerName
The name of the computer to query.
.PARAMETER DriveType
The type of drive to query. Defaults to 3,
representing local fixed disks.
.EXAMPLE
.\Get-DiskInfo -ComputerName localhost -Verbose
#>
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)][string]$ComputerName,
[int]$DriveType = 3
)
Write-Verbose "Getting drive types of $DriveType from $ComputerName"
Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=$DriveType" -ComputerName $ComputerName |
Select-Object -Property @{n='DriveLetter';e={$PSItem.DeviceID}},
@{n='FreeSpace(MB)';e={"{0:N2}" -f ($PSItem.FreeSpace / 1MB)}},
@{n='Size(GB)';e={"{0:N2}" -f ($PSItem.Size / 1GB)}},
@{n='FreePercent';e={"{0:N2}%" -f ($PSItem.FreeSpace / $PSItem.Size * 100)}}
}
Exercise1-Task3.ps1
function Get-DiskInfo {
<#
.SYNOPSIS
Retrieves disk space information.
.DESCRIPTION
Retrieves disk information from a single computer.
.PARAMETER ComputerName
The name of the computer to query.
.PARAMETER DriveType
The type of drive to query. Defaults to 3,
representing local fixed disks.
.EXAMPLE
.\Get-DiskInfo -ComputerName localhost -Verbose
#>
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)][string]$ComputerName,
[int]$DriveType = 3
)
Write-Verbose "Getting drive types of $DriveType from $ComputerName"
Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=$DriveType" -ComputerName $ComputerName |
Select-Object -Property @{n='DriveLetter';e={$PSItem.DeviceID}},
@{n='FreeSpace(MB)';e={"{0:N2}" -f ($PSItem.FreeSpace / 1MB)}},
@{n='Size(GB)';e={"{0:N2}" -f ($PSItem.Size / 1GB)}},
@{n='FreePercent';e={"{0:N2}%" -f ($PSItem.FreeSpace / $PSItem.Size * 100)}}
}
Get-DiskInfo -ComputerName localhost
Exercise2-Task1.ps1
function Get-DiskInfo {
<#
.SYNOPSIS
Retrieves disk space information.
.DESCRIPTION
Retrieves disk information from a single computer.
.PARAMETER ComputerName
The name of the computer to query.
.PARAMETER DriveType
The type of drive to query. Defaults to 3,
representing local fixed disks.
.EXAMPLE
.\Get-DiskInfo -ComputerName localhost -Verbose
#>
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)][string]$ComputerName,
[int]$DriveType = 3
)
Write-Verbose "Getting drive types of $DriveType from $ComputerName"
Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=$DriveType" -ComputerName $ComputerName |
Select-Object -Property @{n='DriveLetter';e={$PSItem.DeviceID}},
@{n='FreeSpace(MB)';e={"{0:N2}" -f ($PSItem.FreeSpace / 1MB)}},
@{n='Size(GB)';e={"{0:N2}" -f ($PSItem.Size / 1GB)}},
@{n='FreePercent';e={"{0:N2}%" -f ($PSItem.FreeSpace / $PSItem.Size * 100)}}
}
Get-DiskInfo -ComputerName localhost
Exercise2-Task2.ps1
function Get-DiskInfo {
<#
.SYNOPSIS
Retrieves disk space information.
.DESCRIPTION
Retrieves disk information from a single computer.
.PARAMETER ComputerName
The name of the computer to query.
.PARAMETER DriveType
The type of drive to query. Defaults to 3,
representing local fixed disks.
.EXAMPLE
.\Get-DiskInfo -ComputerName localhost -Verbose
#>
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)][string]$ComputerName,
[int]$DriveType = 3
)
Write-Verbose "Getting drive types of $DriveType from $ComputerName"
Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=$DriveType" -ComputerName $ComputerName |
Select-Object -Property @{n='DriveLetter';e={$PSItem.DeviceID}},
@{n='FreeSpace(MB)';e={"{0:N2}" -f ($PSItem.FreeSpace / 1MB)}},
@{n='Size(GB)';e={"{0:N2}" -f ($PSItem.Size / 1GB)}},
@{n='FreePercent';e={"{0:N2}%" -f ($PSItem.FreeSpace / $PSItem.Size * 100)}}
}
Exercise3.ps1
function Get-DiskInfo {
<#
.SYNOPSIS
Retrieves disk space information.
.DESCRIPTION
Retrieves disk information from a single computer.
.PARAMETER ComputerName
The name of the computer to query.
.PARAMETER DriveType
The type of drive to query. Defaults to 3,
representing local fixed disks.
.EXAMPLE
.\Get-DiskInfo -ComputerName localhost -Verbose
#>
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)][string]$ComputerName,
[int]$DriveType = 3
)
Write-Verbose "Getting drive types of $DriveType from $ComputerName"
Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=$DriveType" -ComputerName $ComputerName |
Select-Object -Property @{n='DriveLetter';e={$PSItem.DeviceID}},
@{n='FreeSpace(MB)';e={"{0:N2}" -f ($PSItem.FreeSpace / 1MB)}},
@{n='Size(GB)';e={"{0:N2}" -f ($PSItem.Size / 1GB)}},
@{n='FreePercent';e={"{0:N2}%" -f ($PSItem.FreeSpace / $PSItem.Size * 100)}}
}
Exercise3-Task2.ps1
function Get-DiskInfo {
<#
.SYNOPSIS
Retrieves disk space information.
.DESCRIPTION
Retrieves disk information from a single computer.
.PARAMETER ComputerName
The name of the computer to query.
.PARAMETER DriveType
The type of drive to query. Defaults to 3,
representing local fixed disks.
.EXAMPLE
.\Get-DiskInfo -ComputerName localhost -Verbose
#>
[CmdletBinding()]
Param(
[Parameter(Mandatory=$True)][string]$ComputerName,
[int]$DriveType = 3
)
Write-Verbose "Getting drive types of $DriveType from $ComputerName"
Write-Debug "About to query $computername"
Get-WmiObject -Class Win32_LogicalDisk -Filter "DriveType=$DriveType" -ComputerName $ComputerName |
Select-Object -Property @{n='DriveLetter';e={$PSItem.DeviceID}},
@{n='FreeSpace(MB)';e={"{0:N2}" -f ($PSItem.FreeSpace / 1MB)}},
@{n='Size(GB)';e={"{0:N2}" -f ($PSItem.Size / 1GB)}},
@{n='FreePercent';e={"{0:N2}%" -f ($PSItem.FreeSpace / $PSItem.Size * 100)}}
}
Understand terminating and non-terminating errors in PowerShell, and control flow with error action preference (continue, silently continue, enquire, stop) and the error action parameter to trap and handle errors.
Master error handling in Windows PowerShell with try, catch, finally; learn how to use error action stop and optional finally, with multiple catch sections.
Capture PowerShell errors with the built-in $error array (first item is most recent) and the $ev alias; $error is global, holds the most recent error, with optional file logging.
Explore PowerShell error handling with four error actions—continue, silently continue, inquire, and stop—alongside try, catch constructs and error logging using the error variable.
Develop basic error handling in PowerShell by adding robust error traps and verbose output to functions, tested through lab scenarios using Get-CIMInstance.
Master basic error handling in Windows PowerShell by adding try and catch to functions, logging errors, and validating script behavior through tests and verbose output.
Learn to add configurable error logging to a script by exposing a parameter for the log file name, providing a default, and emitting verbose notices in production environments.
Learn three of Windows PowerShell's frequently used scripting constructs to empower beginners to automate processes with short scripts and reusable tools, using logical decisions, choices, and object enumeration loops.
Learn to use the if construct in PowerShell to make decisions, with a mandatory if section, conditions in parentheses, script blocks, and else if and else sections evaluated in order.
Master the switch construct: it matches a value against multiple possibilities, executes matching script blocks, and uses a default when no match. Use wildcard patterns and break to control matches.
Demonstrates how the foreach construct enumerates a collection of objects one at a time, contrasts its syntax with foreach-object and its alias foreach, and shows readable script examples.
Demonstrate the if construct by checking the drive type property and displaying a message accordingly. Enumerate four computer names, process one target at a time, and handle errors with GetCIMInstance.
Explore how PowerShell remoting enables secure, scalable remote server management via WS-Management and WinRM, with architecture components, configurations, and cross-version compatibility.
Learn the PowerShell remoting architecture, including http port 5985 with optional https 5986, endpoints, and the flow from remote command execution to XML serialization and deserialization.
Identify the target network adapter with get-netadapter and note its interface alias or index, then disable DHCP and apply static IPv4 and IPv6 settings with set-netipinterface and new-netipaddress.
Configure the first domain controller as DNS by setting DNS server addresses with set-dns-client-server-address using the interface alias. Rename the server to lab-dc1 and restart to prepare for forest deployment.
Install Active Directory Domain Services with install-windows-feature, including management tools, then use the ADDS deployment module to prepare, test prerequisites, and promote a server to a domain controller.
Deploy the first domain controller and root active directory domain services forest with Install-ADDSForest, using no dns on network, force, and optional safe-mode password; review domain and forest functional levels.
Configure DNS server and manage DNS zones with Windows PowerShell; learn about primary, secondary, and stop zones, Active Directory integrated primary zones, forward and reverse lookup, and zone files.
Create a reverse lookup zone with the network ID parameter, enabling Active Directory integrated replication across the forest and both secure and non-secure dynamic updates; export to a file.
Install active directory domain services and DNS server role on a new domain controller using server manager's graphical user interface, then promote it for testing and future secondary zones.
Add a domain controller to an existing contoso domain, configure dsrm in directory services restore mode, replicate from labdc1.contoso.com, set ad ds databases on ntfs, and complete the installation.
Demonstrates restoring a secondary DNS zone from a backup file, configuring master and secondary servers, and securing zone transfers with set-dns-server-primary-zone options.
Configure DNS stub zones and conditional forwarders to control name resolution. Assess security implications and implement stub zones, file-based or Active Directory integrated, to minimize exposure to named servers.
Master DNS zone delegation and core resource records with PowerShell, including add-dnsserver-zone-delegation and set-dnsserver-zone-delegation, and manage A, CNAME, MX, NS, and SRV records.
Learn to create and manage Active Directory users, groups, and OUs using Windows PowerShell, including creating users with new-adUser, assigning to groups with add-adGroupMember, and bulk imports via import-csv.
Create and manage Active Directory organizational units with new-ad-organizational-unit, set display name and description, protect from accidental deletion, then move objects with move-ad-object after locating them with get-ad-user and get-ad-organizational-unit.
Master managing active directory objects by creating, modifying, enabling, disabling, moving, and deleting user and computer accounts using PowerShell cmdlets.
Modify and manage Active Directory user accounts using PowerShell and GUI tools; learn bulk updates, view attributes with Get-ADUser, and use Set-ADUser to update description and other properties.
Use the add-adgroupmember cmdlet to grant James the same security groups as the administrator by enumerating the admin’s groups with get-aduser and adding James to each group.
Update office, home, and mobile numbers for multiple Active Directory users with PowerShell. Identify attributes, use csv data, and apply bulk updates with Set-ADUser.
Learn bulk enable and disable of Active Directory objects with enable-ad account and disable-ad account, using DN, GUID, SID, or sam account names. Move objects between OUs with move-ad-object.
Delete and manage Active Directory user accounts with remove-ad-user or remove-ad-object using the identity parameter, bypass prompts with -confirm:$false, and delete from a text file via get-content.
Manage computer objects in Active Directory with PowerShell by creating, modifying, enabling or disabling, and moving computer accounts using New-ADComputer, Set-ADComputer, and Move-ADObject, including prestaging for deployment.
Learn to manage Active Directory computer accounts by enabling, disabling, and deleting stale or offline objects with get-adcomputer, enable-adaccount, disable-adaccount, and remove-adcomputer, using last-logon-date and OU filters.
Learn to create and manage Active Directory security groups (domain-local, global, universal), search and modify groups with Get-ADGroup and Set-ADGroup, and manage group memberships including adding, removing, and deleting groups.
Learn to add members to security groups in Active Directory using get-adgroupmember and add-adgroupmember, including single, multiple, and OU-based additions, plus copying between groups and verifying in ADUC.
Add computer accounts to security groups by appending a dollar sign to the computer name, and use Get-ADComputer and add-adgroup member to automate grouping by name patterns.
Nest security groups in active directory by adding one group to another, and understand universal, global, and domain-local group scopes.
List security group members in Active Directory with Get-ADGroupMember, including nested groups, and export results to CSV. Remove members and delete groups with Remove-ADGroupMember and Remove-ADGroup from CSV.
Discover the Microsoft Group Policy PowerShell module for GPO management, covering cmdlets like get gpo, backup gpo, new starter gpo, and invoke gp update, plus gpo link and inheritance concepts.
Learn to use the Microsoft group policy PowerShell module to retrieve and inspect GPOs with Get-GPO, connect to different domains or DCs, and modify GPO status via PowerShell.
Learn to manage group policy objects with PowerShell, including creating, renaming, deleting, counting, and linking GPOs, plus setting permissions, backing up, restoring, and importing policies.
Compare graphical server manager and powershell to install IIS on Windows Server, emphasizing minimal components to reduce attack surface, and using Get-WindowsFeature and Add-WindowsFeature for rapid web server deployment.
Explore how websites act as file-server containers and learn to configure the default website and its sites and applications using IIS Manager and PowerShell.
Test the default website by loading it in a browser to verify the web server is running, and explore its files under inetpub/wwwroot using the web administration module in PowerShell.
Navigate the IIS folder structure with File Explorer or the Explore option in the IIS Manager, create a simple default webpage in inetpub/wwwroot with Notepad, and test with Internet Explorer.
Install ASP or ASP.NET components using PowerShell or Server Manager, create a dynamic ASP page displaying server variables, and configure default documents for testing across sites.
Configure HTTP2 on IIS 10, test with an ASP.NET web app, and enable push and HPEG header compression. Verify browser support, and adjust logs and the duo-enabled registry setting.
Connect to the nano server using enter-pssession, import the IIS administration module, and manage websites with PowerShell by creating a nano site and a nano site dot com on port 8080.
Enable IIS remote management across Nano Server and Core Server using PowerShell remoting by installing the web-mgmt-service role, enabling and starting the WMSVC service, and configuring self-signed or trusted certificates.
Authorize dhcp servers in the domain controller with add dhcp server in dc, verify with get dhcp server in dc, and remove unwanted servers with remove dhcp server in dc.
Learn where DHCP files reside by default in Windows32 and System32, locate them with the DHCP asterisk, and inspect the DHCP database in the DHCP folder using dir and dhcp.mdb.
Add a second DHCP server from one console, create a 10.20.scope from 10.20 to 10.40, exclude 10.20–10.25, set lease duration, router and DNS options, and activate later.
Adjust scope properties, including start and end IP addresses and duration, and configure scope options like time server, DNS servers, DNS domain, and router.
Create and manage superscopes in dhcpserver by linking existing scopes, renaming, deactivating, and deleting, using PowerShell commands for superscopes with administrative privileges.
Explore dhcp scopes and server policies, then test a scope policy for mac address filtering. Create a test policy named project 1 to assign ip addresses to matching macs.
Master essential DHCP PowerShell commands, including get-command for the DHCP module and restarting the DHCP server. Use import CSV for reservations and backup or restore the DHCP server.
Explore fundamentals of PowerShell in Windows Server 2016, including overview and background, learning and finding commands, and running commands as part of a three-part bootcamp.
Explore the background and purpose of Windows PowerShell, learn its system requirements, and how to open, configure the two native Windows PowerShell hosting applications, and view version information.
Explore Windows PowerShell as an object-oriented engine for administrative automation, usable as a CLI or embedded in GUI apps, with commands like cmdlets, functions, and workflows.
Select the appropriate PowerShell host for your OS, choosing 64-bit versions or the 32-bit x86 when needed, and run as administrator to confirm elevated credentials and Administrator in the title.
Configure the console for readability by choosing a true type font, adjusting the size and layout to avoid horizontal scrolling, and enabling quick edit mode for copy/paste.
Configure the PowerShell console, master copy-paste and history navigation with F7 and arrows, run as administrator, customize font and layout, and start transcript for session logging via Get-History.
Explore the PowerShell ISE, a graphical script editor with debugging and an interactive console. Learn to use its two-pane layout, dockable command pane, and customizable themes and snippets.
Open the Windows PowerShell ISE as administrator, then dock, undock, and close the command pane, adjust layout and font size, and change the theme via the Tools menu.
Learn to use the Windows PowerShell help system to discover commands, correct command syntax, and use aliases; practice finding commands through keyword searches and updating local help for lab readiness.
Discover how Windows PowerShell provides in-product help with get-help, help, and man, including -showwindow and -example usage, and learn about -recurse, the get-child-item command, and online or updatable help.
Utilize PowerShell built-in help and get-command to discover commands, with module auto-loading paving on-demand access; use wildcard searches and get-module to explore verbs and noun prefixes.
Learn how Windows PowerShell retrieves help through online services, updateable help, and local save options. Understand how update-help and save-help handle language defaults, internet requirements, and module scope.
Explore Windows PowerShell help files that cover scripting language concepts, operators, and global shell techniques, and learn to use help about, help topic, and wildcard patterns for lab-ready reference.
Learn to run PowerShell commands with full syntax, supply multiple parameter values, and use shortened command syntax, including the show command, to execute configuration changes.
Learn the full syntax of Windows PowerShell commands, including verb-noun forms, dash-prefixed parameters, and the role of tab completion and spacing for accurate usage.
Discover how PowerShell supports aliases, positional parameters, and truncated parameter names, and why tab completion with full names improves readability and maintainability. Aliases like get-service and gsv illustrate shorter forms.
Explore how windows powershell uses what-if and confirm to test and control command execution. Understand confirm impact levels and how $confirmPreference and $what -ifPreference govern prompts in a session.
PowerShell uses pipelines with vertical bars to pass output left to right between commands; the console shows only the last command's result and supports multi-line input via the grave accent.
Learn to chain get-service into pipelines in PowerShell, then use outfile to create service-list.txt or the greater-than symbol to write the same results to a file.
Explore object members in Windows PowerShell, including properties, methods, and events; learn to list them with GetMember, inspect type names like System.ServiceProcess.ServiceController, and understand caveats with what-if and pipeline usage.
Sort, select, and measure objects in the pipeline using PowerShell commands, learn to sort on a specified property, measure numeric properties, and display customized object views.
Learn how Windows PowerShell converts data between formats, redirects output to files, and exports and imports objects to and from external storage.
Understand how PowerShell converts pipeline objects to HTML, CSV, or XML using convert-to and export, and how out-file writes data to files, not the pipeline.
Learn to filter PowerShell objects by property using comparison operators, with case-insensitive string tests and advanced operators like -like, -in, -contains, and -match, plus basic vs advanced syntax.
Learn how to access and read PowerShell help for the rename computer command, using parameters such as computer name, remote rename, confirm, force, local credentials, and what-if with examples.
Learn to restart computers with the Restart-Computer command, use Get-Help and Get-ComputerInfo, and run local or remote restarts with examples including restarting multiple machines or as a job.
Learn to download and install current PowerShell help with update-help, observe daily limits, and save to a local destination with save-help-destination-path.
Enable PowerShell remoting in a non-domain environment by running the quickconfig command in an interactive PowerShell prompt, configure the network profile to private, and trust hosts to establish ps sessions.
Explore how the best practice analyzer (bpa) assesses Windows Server configurations against Microsoft best practices, reports violations, and guides fixes using module scans like Microsoft Windows file services.
Manage Windows firewall by enabling or disabling domain, private, and public profiles with set-netfirewallprofile, preview changes with what-if, and create inbound program rules using new-netfirewallrule for Skype.
Explore server roles and features with the server manager module, list installed items via get-windowsfeature, view features, and install telnet client with include all sub feature and include management tools.
Explore powershell directory navigation with dir, ls, and get-children, including reading registry access, paging results with more, and comparing set location and cd across paths.
Explore PowerShell pipeline mechanics to chain commands like Get-Service, sort by status, and Select-Object; inspect properties, methods, and type name with Get-Member, and control services by stop and start.
Master piping and working with service objects in PowerShell by exporting to CSV, importing CSV, and using get-member, select-object, and format-table to manipulate real objects rather than text.
Explore sorting, selecting, and filtering PowerShell drive objects, create a kilobyte size property, and inspect file and process attributes, including virtual memory size, via where-object and like patterns.
Explore recursive versus interactive DNS queries, forwarders, and zone types—primary, secondary, and stub—including AD-integrated zones and common DNS records like A and CNAME, plus essential troubleshooting tools.
Explore DNS in Windows Server, covering naming system, architecture, zone types including de-integrated zones, records, caching, forwarders, and resolver operations from root hints to authoritative servers.
Explore how to remove and install the DNS role on Windows Server using server management tools and PowerShell, including Get-WindowsFeature, Remove-WindowsFeature, Install-WindowsFeature, and restart steps.
Create a primary forward lookup zone with powershell using add dns server primary zone for pstest1.local with forest replication and secure dynamic update, plus a file-based pstest2 zone.
Create and configure reverse lookup zones using both graphical interface and PowerShell, including primary and secondary zones, secure dynamic updates, and conditional forwarders in a forest replication setup.
Explore format-wide in PowerShell to display a single property per object in a wide table, using autosize and column controls, and group by status after sorting.
Discover how Out-File outputs PowerShell data to text files via file-path, with options like append, nonewline, width, and inputobject, plus redirection operators.
Discover how Out-String converts PowerShell objects to strings, compare single-string output with the stream option that returns an array of strings, and why preserving objects matters.
Use outprinter to send PowerShell output to a printer, choosing the default or a named printer like Microsoft Print to PDF, and format the data with format list before printing.
Explore how out-null hides command output by removing it from the pipeline, and compare methods like $null redirection and [void] casting for suppressing output in PowerShell.
Explore PowerShell object handling by grouping on username, sorting by status, and selecting properties from processes and services. Measure working set with sum and average, then view results with select-object.
Combine PowerShell commands in the pipeline to retrieve and rank top memory-using processes, files, and event logs, then measure, group, and view results.
Master the PowerShell pipeline with ForEach-Object, encrypting files per item, and building on-the-fly properties. Use group, measure, select, and parallel execution to manage remote servers and events.
Understand how domain controllers authenticate users, the Global Catalog's effect on sign-in, and how DNS and SRV records support ADDS; consider GC placement in single domain environments and multi-domain scenarios.
Prepare Windows Server 2016 with the Hyper-V role, mount installation media, and use PowerShell to generate a nano server image and vhdx, then deploy it via Hyper-V.
Complete nano server post-install tasks, join the server to the adatum domain, and enable Windows PowerShell remoting to configure settings, share files, and manage remoting sessions.
Learn to configure nano server with PowerShell: check and install features using get-windows-feature and install-windows-feature. Use ps-session, get-net-ip-address, bcdedit-enum, and net share to verify networking and shares.
Enable remote management and add nano-srv1, then create an smb share named data and verify a web and file server on nano server with a simple html page.
Master PowerShell for IIS on nano server: connect with enter-pssession, import the IIS administration module, create nano site dot com, and manage sites with start or stop commands.
Explore PowerShell 7 with Windows Terminal using get-command to reveal commands and filter by type, verb, or noun. Use wildcards with disk-related commands and learn verbs with get-verb, including mount.
Discover aliases in PowerShell, where dir and ls map to getChildItem and gsv to getService, use getCommand and help to reveal targets, parameters, and how to create your own aliases.
Explore PS Readline features in PowerShell, including persistent history search with Ctrl+R, inline command predictions from history, and color customization using set PS Readline option and colors.
Master the PowerShell pipeline by getting content from services.txt using get-content, piping to get-service and restart-service, and exporting to restart.txt with outfile and passthrough.
Explore PowerShell's format system, including out-default and out-host, and how format-table and format-list adapt output for strings and objects. Learn to inspect and customize format data.
Explore how to format output in PowerShell using Format-Table, including grouping, sorting, selecting properties, autosize, wrap, and header controls.
Learn to manage mail-enabled contacts and mail-enabled users with the Exchange Management Shell, using new, enable, disable, and remove cmdlets, and update attributes with set-contact and set-user.
Manage room and equipment mailboxes with the Exchange Management Shell or ISE, enable auto-accept for booking requests, use delegates, add custom resource properties, and convert mailboxes for efficient scheduling.
Bulk provision exchange mailboxes using CSV files in the Exchange Management Shell, creating mailboxes with name, alias, user principal name, and organizational unit, with secure passwords and forced password resets.
Discover how MailTips in Exchange 2010 alert users in Outlook and Outlook Web App, with per-organization and per-mailbox customization using setOrganizationConfig and setMailbox.
Learn to use recipient filters with the exchange management shell to create dynamic distribution groups, address lists, and email address policies with opas filtering syntax for exchange 2007 and later.
Use the setMailbox cmdlet with a hashTable of emailAddresses to add or remove addresses for Exchange 2016 recipient types (mailbox, distribution groups, contacts, public folders), including bulk updates.
Manage mailboxes with PowerShell in Exchange 2016, including moving, exporting, and searching mailboxes. Generate size reports with GetMailboxDatabase and GetMailboxStatistics, filtering by disconnect date, and export to csv.
Learn to generate mailbox reports in bulk using the Exchange Management Shell, filtering by when-mailbox-created with Get-Date and AddDays, and exporting results to CSV.
Learn how Exchange uses move requests and the new move-request cmdlets to move mailboxes, monitor progress, perform bulk moves, and manage archives and reports.
Discover how to automate mailbox import and export in Exchange 2010 with server-side cmdlets. Assign the MailboxImportExport role, configure a UNC file share, and monitor export tasks with GetMailboxExportRequest.
Delete mailbox items with Exchange's search-mailbox, assign mailbox import-export and mailbox search RBAC roles, and use KQL queries to target subjects.
Configure mailbox storage quotas in the Exchange Management Shell with setMailbox to enforce per-mailbox limits such as IssueWarningQuota, ProhibitSendQuota, and ProhibitSendReceiveQuota, overriding database defaults for Manager users via bulk commands.
Learn how to restore deleted mailbox items using single-item recovery, the Search Mailbox commandlet, dumpster-only searches, and the Exchange Management Shell with role assignments.
Retrieve distribution group membership using the exchange management shell, loop through groups, build a custom object with member, recipient type, and group properties, and export to csv.
Execute bulk operations by using GetContent and ImportCSV to load recipients from text and csv files, then pipe to ForEachObject to add each recipient to a distribution group with AddDistributionGroupMember.
Learn to manage disabled Active Directory accounts in distribution groups with the Exchange Management Shell, using foreach loops, get-aduser, and exporting a csv of disabled members.
Configure distribution group naming policies in Exchange using set-organization-config, applying department and state attributes and blocking words, with a default OU. Override with ignore-naming-policy via new-distribution-group or set-distribution-group under RBAC.
Configure end-user distribution group membership with setDistributionGroup, adjusting memberJoinRestriction and memberDepartRestriction to open or closed, including approval workflows in Outlook and Outlook Web Access.
Export address lists to CSVs using get-recipient and recipientFilter, select display name and database, and join multivalued SMTP addresses for a complete output.
Recap essential PowerShell commands for distribution groups, including creating groups, importing from CSV, and managing owners, visibility, and membership.
Explore creating, mounting, renaming, and removing mailbox databases with the Exchange Management Shell cmdlets, and understand automatic mailbox distribution across databases.
Move databases and their log streams to a new location via the Exchange Management Shell using move-database-path, with confirm:false and force for automated offline dismount/remount.
Configure mailbox database storage limits with setMailboxDatabase to enforce issueWarningQuota, prohibitSendQuota, and prohibitSendReceiveQuota. Manage deleted item retention, mailbox retention, and retainDeletedItemsUntilBackup, with bulk updates via pipelines.
Learn how to determine the total number of mailboxes in a mailbox database with PowerShell, using getMailboxDatabase with count property or MeasureObject, and produce per-database totals via SelectObject calculated properties.
Use PowerShell to generate mailbox database reports by calculating average mailbox size per database with getMailboxStatistics, forEach, measure-Object, and formatting with round, -f, and where-Object filtering.
Create a database availability group with the New-DatabaseAvailabilityGroup cmdlet, configure an IP-less DAG, set a file share witness, and manage it via PowerShell or GUI.
Add mailbox servers to a database availability group with the add-database-availability-group-server cmdlet, verify supported Windows Server editions, CNO permissions, and optional automation with get-mailbox and get-exchange-server.
Learn to manage Exchange dock networks with the Exchange Management Shell: view, modify, and remove networks; configure replication, MAPI versus replication networks, and encryption and compression settings.
Explore adding and removing mailbox database copies with the Exchange Management Shell, monitor copy status, and automate multi-server dock deployments using the newDockMailboxDatabase PowerShell function.
This course is aimed to IT Pros and is supposed to give the viewer the information they need to know to get started with Powershell and how to manage Windows Server 2016 with its help.
The goal is to provide coverage of Powershell Fundamental tasks including topics like Active Directory, DNS, DHCP, IIS etc.
The course is targeted to help to automate and script daily tasks. There are lots of live demonstrations how to use PowerShell commands and a Server's GUI. I hope it will help to do your job more efficiently.
This course does not have a direct mapping to any exam. However, while there is not a standalone Windows PowerShell exam the topics are covered across all the individual Microsoft Certified Solutions Associate (MCSA) and Microsoft Certified Certified Solutions Expert (MCSE) exams. This course will help prepare you for Windows PowerShell related concepts and processes within those exams.
A Brief Contents of the Course:
Windows Server 2016 with PowerShell: Active Directory
Powershell and Active Directory Users, Computers, Groups
Powershell and DHCP
Powershell and DNS
Powershell and IIS
Powershell Fundamentals
Powershell with Pipeline
Powershell: Formatting Output
Powershell: PSProviders
Powershell: PSDrives
Using WMI and CIM
Powershell and Exchange Server
Powershell and Nano Server
Preparing for Scripting:
Using Variables
Using the write-host
Parameterizing Changing Values
Wrapping a Script in a Function
Creating a Script Module
Understanding Error Actions
Using Scripting Constructs
Much more...