Skip to content

This is an old project that Ive revived and tweaked to help teach my son how use Powershell for administration and automation tasks. Follow along with my son and I as we complete a 30 day PowerShell learning challenge.

Notifications You must be signed in to change notification settings

jShy-Dev/30DaysofPowerShell

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 

Repository files navigation

30DaysofPowerShell

Please note:

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.

🧭 30-Day PowerShell + Automation Curriculum

Each day includes:
• Concepts & Topics
• Hands-on Exercises


🔰 Week 1: PowerShell Fundamentals

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)

⚙️ Week 2: Scripting and Automation Basics

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

🧠 Week 3: Advanced Scripting & Modules

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

🚀 Week 4: Real-World Automation + Final Project

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

🧩 Final Project: System Admin Dashboard

🎯 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)

About

This is an old project that Ive revived and tweaked to help teach my son how use Powershell for administration and automation tasks. Follow along with my son and I as we complete a 30 day PowerShell learning challenge.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published