This is an old project that Ive revived and tweaked to help teach my son how use Powershell for administration and automation tasks. I designed the content to get progressively more complex but ive stretched the content a bit to make 30 days worth of topics and practice. We will be updating the repo as frequently as life and free time allows - a true script kiddie education. Follow along with my son and I as we complete a 30 day PowerShell learning challenge.
Each day includes:
• Concepts & Topics
• Hands-on Exercises
Day 1: Introduction to PowerShell √ Topics: What is PowerShell, Cmdlets, Console vs ISE vs VS Code √ Exercise: Run basic cmdlets (Get-Command, Get-Help, Get-Process, Get-Service)
Day 2: Cmdlets and Aliases √ Topics: Cmdlet structure, common aliases, Get-Alias √ Exercise: Create a cheat sheet of 20 cmdlets and their aliases
Day 3: Variables and Data Types √ Topics: $variables, strings, arrays, hash tables √ Exercise: Create a script that stores and displays system info
Day 4: Operators and Expressions √ Topics: Comparison, logical, arithmetic operators √ Exercise: Write a script that checks disk space and alerts if low
Day 5: Conditional Logic √ Topics: if, elseif, else, switch √ Exercise: Script to check service status and restart if stopped
Day 6: Loops √ Topics: for, foreach, while, do-while √ Exercise: Loop through a list of computers and ping them
Day 7: Functions and Scope √ Topics: Defining functions, parameters, scope √ Exercise: Create a function to get user info from AD (mocked)
Day 8: Script Files and Execution Policy √ Topics: .ps1 files, execution policies, signing scripts √ Exercise: Write and run a script that logs system info to a file
Day 9: Error Handling √ Topics: try, catch, finally, $ErrorActionPreference √ Exercise: Script that handles missing files gracefully
Day 10: Working with Files and Folders √ Topics: Get-Item, Copy-Item, Remove-Item, Test-Path √ Exercise: Backup script for a folder with logging
Day 11: Working with CSV, JSON, XML √ Topics: Import-Csv, ConvertTo-Json, Select-Xml √ Exercise: Parse a CSV of users and output a report
Day 12: Scheduled Tasks √ Topics: Register-ScheduledTask, schtasks.exe √ Exercise: Automate a daily cleanup script
Day 13: PowerShell Remoting √ Topics: Enter-PSSession, Invoke-Command, WinRM √ Exercise: Run a script on a remote machine (lab setup)
Day 14: Review + Mini Project √ Exercise: Create a script that audits system info and emails a report
Day 15: Modules and Snap-ins √ Topics: Import-Module, Get-Module, creating modules √ Exercise: Package your audit script as a module
Day 16: Working with APIs • Topics: Invoke-RestMethod, Invoke-WebRequest • Exercise: Pull weather data from an API and display it
Day 17: Active Directory Automation • Topics: Get-ADUser, New-ADUser, Set-ADUser • Exercise: Script to bulk create users from CSV (mocked)
Day 18: Windows Event Logs • Topics: Get-EventLog, Get-WinEvent • Exercise: Script to monitor and alert on specific events
Day 19: Registry and WMI • Topics: Get-ItemProperty, Get-WmiObject, Get-CimInstance • Exercise: Script to check installed software via WMI
Day 20: GUI with Windows Forms • Topics: Add-Type -AssemblyName System.Windows.Forms • Exercise: Create a simple GUI to select and run scripts
Day 21: Review + Mini Project • Exercise: Build a GUI tool to manage services on local/remote machines
Day 22: Logging and Transcripts • Topics: Start-Transcript, custom logging functions • Exercise: Add logging to previous scripts
Day 23: Security and Credentials • Topics: Get-Credential, ConvertTo-SecureString, credential vaults • Exercise: Securely store and use credentials in a script
Day 24: Packaging and Distribution • Topics: Script packaging, signing, documentation • Exercise: Package your service manager GUI tool
Day 25: Git and Version Control • Topics: Git basics, GitHub, versioning scripts • Exercise: Push your scripts to a GitHub repo
Day 26: Testing and Debugging • Topics: Set-PSBreakpoint, Write-Debug, Pester tests • Exercise: Write tests for your module or script
Day 27: User Input and Forms • Topics: InputBox, ComboBox, ListBox • Exercise: Enhance your GUI with user input options
Day 28: Review + Final Project Planning • Exercise: Sketch out your final project GUI and logic
Day 29–30: Final Project Execution • Project: "System Admin Dashboard" • GUI with tabs for: • System Info • Service Manager • User Management (mocked) • Event Log Viewer • Script Runner • Features: • Logging • Credential management • Remote support • Modular code
🎯 Goal Create a Windows Forms-based PowerShell GUI tool that allows an administrator to: • View system information • Manage services • View event logs • Run scripts • (Optionally) manage users (mocked or real if AD is available)