PowerShell Profile
June 1, 2026 ยท View on GitHub
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.
Highlights
- 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.
Install
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.
PowerShell Core (X-Platform)
irm 'https://raw.githubusercontent.com/jonlabelle/pwsh-profile/main/install.ps1' |
pwsh -NoProfile -ExecutionPolicy Bypass -
Windows PowerShell Desktop 5.1
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.
Quick Start
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 1
Screenshots
Invoke-NetworkDiagnostic
Runs 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 -IncludeDns

Show-PlatformPackageManager
Provides a unified interface for managing platform packages across winget, brew, apt, and apk.
PS > Show-PlatformPackageManager

Show-SystemResourceMonitor
Displays a live monitor for CPU, memory, disk, network activity, and top processes.
PS > Show-SystemResourceMonitor

Show-ProfileFunction
Lists all functions available in this profile, organized by category.
PS > Show-ProfileFunction

Documentation
Everything 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.
Function Areas
| 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, .NET tools, 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 |
Local Functions
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.
Updating
Pull the latest profile changes with:
Update-Profile
Check for updates without applying them:
Test-ProfileUpdate
Both commands require Git. If Git is unavailable, rerun the install command to fetch the latest files.
Standalone Use
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 443
Function dependencies are lazy-loaded by the function file when needed.
Contributing
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: