Skip to content

jonlabelle/pwsh-profile

Repository files navigation

PowerShell Profile

ci codeql

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 .ps1 files 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 for Update-Profile and Test-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

Invoke-NetworkDiagnostic screenshot

Show-PlatformPackageManager

Provides a unified interface for managing platform packages across winget, brew, apt, and apk.

PS > Show-PlatformPackageManager

Show-PlatformPackageManager screenshot

Show-SystemResourceMonitor

Displays a live monitor for CPU, memory, disk, network activity, and top processes.

PS > Show-SystemResourceMonitor

Show-SystemResourceMonitor screenshot

Show-ProfileFunction

Lists all functions available in this profile, organized by category.

PS > Show-ProfileFunction

Show-ProfileFunction screenshot

Documentation

Everything you need to know about installation, functions, troubleshooting, remoting, and contribution lives in the docs folder:

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, 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.ps1 file.
  • Private helpers may live under category-specific Private folders.
  • 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:

Author

@jonlabelle

License

MIT License

About

A modern, cross-platform PowerShell profile

Topics

Resources

License

Contributing

Security policy

Stars

Watchers

Forks

Contributors

Languages