A modern, cross-platform PowerShell profile with auto-loading utility functions for network testing, system administration, and developer workflows.
This profile turns the PowerShell profile directory into a small, portable toolkit. Public functions under Functions are loaded automatically, machine-local helpers can live safely under Functions/Local, and the included prompt stays clean across Windows, macOS, and Linux.
- Works with Windows PowerShell Desktop 5.1+ and PowerShell 6+ (
pwsh). - Auto-loads public functions from categorized folders under
Functions. - Preserves local-only profile content during install and update workflows.
- Includes focused tools for DNS, networking, TLS, package management, GitHub, Docker, media files, encoding, and everyday shell utilities.
- Keeps helper functions standalone-friendly, so individual
.ps1files can be dot-sourced without loading the whole profile.
Prerequisites:
- PowerShell Desktop 5.1+ or PowerShell 6+ (
pwsh) - Internet access for the installer and update checks
git, optional but recommended forUpdate-ProfileandTest-ProfileUpdate
The installer backs up profile content it may replace, preserves local paths such as Functions/Local, Help, Modules, PSReadLine, Scripts, and powershell.config.json in place, then deploys the latest profile files.
Git is optional. When Git is unavailable, the installer downloads the repository zip from GitHub.
irm 'https://raw.githubusercontent.com/jonlabelle/pwsh-profile/main/install.ps1' |
pwsh -NoProfile -ExecutionPolicy Bypass -irm 'https://raw.githubusercontent.com/jonlabelle/pwsh-profile/main/install.ps1' |
powershell -NoProfile -ExecutionPolicy Bypass -Need custom paths, restore options, -WhatIf, or full clone history? See the installation guide.
After installation, open a new PowerShell session and try:
# Browse everything the profile loaded
Show-ProfileFunction
# Search for the right command by keyword
Find-ProfileFunction dns
# Test network connectivity
Test-Port bing.com -Port 443
# Get public IP and geolocation details
Get-IPAddress -Public
# Check DNS and TLS
Test-DnsNameResolution github.com
Get-CertificateExpiration github.com
# Run a one-shot network diagnostic
Invoke-NetworkDiagnostic 'bing.com', 'microsoft.com' -MaxIterations 1Runs network and DNS checks for multiple hosts, then renders live latency graphs.
PS > 'www.google.com', 'www.cloudflare.com' |
Invoke-NetworkDiagnostic -Port 80 -Interval 2 -IncludeDnsShow-PlatformPackageManager
Provides a unified interface for managing platform packages across winget, brew, apt, and apk.
PS > Show-PlatformPackageManagerShow-SystemResourceMonitor
Displays a live monitor for CPU, memory, disk, network activity, and top processes.
PS > Show-SystemResourceMonitorShow-ProfileFunction
Lists all functions available in this profile, organized by category.
PS > Show-ProfileFunctionEverything you need to know about installation, functions, troubleshooting, remoting, and contribution lives in the docs folder:
- Installation guide - installer options, restore workflows, and manual fallback steps.
- Function catalog - every public function grouped by category.
- Troubleshooting - execution policy fixes and verbose profile loading.
- Remote sessions - loading profile functions inside PowerShell remoting sessions.
- Local functions - local-only helper templates and conventions.
- Tests - test layout and contribution guidance.
| Area | Includes |
|---|---|
| Network and DNS | DNS, ports, TLS checks, ping, traceroute, WHOIS, GeoIP, latency graphs |
| System Administration | permissions, elevation, TLS session settings, system info, package managers, resource monitor |
| Developer | .NET, dotenv, Git, GitHub pull requests/secrets/variables/topics, Docker, SQLFluff, Magika |
| Utilities | Base64, Markdown, slugs, encodings, file search, symbolic links, sync, archive extraction |
| Security | JWT decoding, certificate inspection, password-based file protection |
| Active Directory | credentials, account lockout checks, group policy update |
| Module Management | module update checks and cleanup |
| Profile Management | function discovery and profile update checks |
| Media Processing | ffprobe, FFmpeg conversion, image metadata inspection and stripping, season file renaming |
Place machine-specific helpers in Functions/Local. Files there load automatically with the rest of the profile, are ignored by Git, and are preserved by the installer and update workflow.
Pull the latest profile changes with:
Update-ProfileCheck for updates without applying them:
Test-ProfileUpdateBoth commands require Git. If Git is unavailable, rerun the install command to fetch the latest files.
Functions can be used without loading the whole profile by dot-sourcing the function file directly:
PS > . 'Functions/NetworkAndDns/Test-Port.ps1'
PS > Test-Port bing.com -Port 443Function dependencies are lazy-loaded by the function file when needed.
Contributions are welcome. Please keep changes aligned with the existing structure:
- One public function per
Functions/{Category}/Verb-Noun.ps1file. - Private helpers may live under category-specific
Privatefolders. - Include focused Pester coverage for new behavior.
- Keep functions cross-platform unless they are clearly platform-specific.
- Open a pull request with a short description and verification steps.
See the complete contributing guide for more details:



