Cross-platform PowerShell profile with auto-loading utility functions for network testing, system administration, and developer workflows.
- Cross-platform compatibility - Works on Windows, macOS, and Linux
- Auto-loading functions - All functions in the
Functions/are auto-loaded with your profile - Local functions support - Add your own functions to
Functions/Local/ - Custom prompt - Clean, colored PowerShell prompt
Overlay Overwrite your PowerShell profile path with the contents of this repository.
Choose your appropriate platform:
git clone 'https://github.com/jonlabelle/pwsh-profile.git' $HOME/.config/powershellgit clone 'https://github.com/jonlabelle/pwsh-profile.git' $HOME\Documents\WindowsPowerShellgit clone 'https://github.com/jonlabelle/pwsh-profile.git' $HOME\Documents\PowerShellThe profile includes various utility commands organized by category:
Get-CertificateExpiration— Gets SSL/TLS certificate expiration dates from remote hostsGet-CertificateDetails— Retrieves detailed SSL/TLS certificate information from remote hostsGet-DnsRecord— Retrieves DNS records for any record type using DNS-over-HTTPSGet-IPAddress— Gets local network interface IPs or public IP address with geolocation dataGet-Whois— Performs WHOIS lookups for domain names with registration details and nameserversInvoke-Ping— Sends ICMP echo requests with detailed statistics (cross-platform ping alternative)Resolve-GeoIP— Resolves IP addresses to geographic locationsSend-TcpRequest— Sends TCP requests and retrieves responses for network testingTest-Bandwidth— Tests network bandwidth with download speed and latency measurementsTest-DnsNameResolution— Tests DNS name resolution using cross-platform .NET methodsTest-HttpResponse— Tests HTTP/HTTPS endpoints and returns response detailsTest-Port— Tests TCP/UDP port connectivity with detailed connection information
Invoke-ElevatedCommand— Executes commands with elevated privileges (Run as Administrator)Set-TlsSecurityProtocol— Configures TLS security protocol settings for secure network connectionsStart-KeepAlive— Prevents the system and display from sleepingTest-Admin— Checks if the current PowerShell session is running as AdministratorTest-PendingReboot— Checks if the system has pending reboot requirementsGet-SystemInfo— Gets basic system information from local or remote computers
Get-DotNetVersion— Retrieves installed .NET Framework and .NET Core versionsRemove-DotNetBuildArtifacts— Cleans up .NET build artifacts from a project directoryRemove-NodeModules— Removes node_modules folders from Node.js project directories
Protect-PathWithPassword— Encrypts files or folders with AES-256 encryption using a passwordUnprotect-PathWithPassword— Decrypts files that were encrypted with Protect-PathWithPassword
Invoke-GroupPolicyUpdate— Forces an immediate Group Policy update on Windows systemsTest-ADCredential— Validates Active Directory user credentialsTest-ADUserLocked— Test if an Active Directory user account is locked out
Get-OutdatedModules— Check if any installed PowerShell modules have newer versionsRemove-OldModules— Removes older versions of installed PowerShell modulesUpdate-AllModules— Updates all PowerShell modules to latest versions
Show-ProfileCommands— Show all commands available in this PowerShell profileTest-ProfileUpdate— Checks for available profile updates from the GitHub repository
Invoke-FFmpeg— Converts video files using Samsung TV-friendly H.264/H.265 encodingRename-VideoSeasonFile— Batch renames TV show episode files to a consistent format
Convert-LineEndings— Converts line endings between Unix and WindowsCopy-DirectoryWithExclusions— Copies directories recursively and exclude specific directoriesGet-CommandAlias— Displays aliases for PowerShell cmdletsGet-IPSubnet— Calculates IP subnet information including network/broadcast addressesNew-RandomString— Generates random strings, useful for passwords/tokensSync-Directory— Synchronizes directories using native platform tools (rsync/robocopy)
The Functions/Local/ directory is available for your machine-local functions that you don't want to commit to the repository. This is perfect for:
- Work-specific utilities
- Personal helper functions
- Experimental functions you're testing
- Machine-specific automations
Any PowerShell file placed in Functions/Local/ will be automatically loaded, just like the built-in functions. The entire directory is git-ignored, so your functions will never be accidentally committed.
See Functions/Local/README.md for detailed usage instructions, templates, and examples.
To manually pull in the latest updates from this repo:
Update-ProfileYou can also check for available updates without applying them:
Test-ProfileUpdateContributions are welcome! Please follow these basic guidelines:
- One function per file in Functions/ (Verb-Noun.ps1) — auto-loaded by the main profile.
- Open a pull request with a brief description and include basic verification steps (lint + quick functional test).
- Keep changes cross-platform compatible per the project's conventions. See ./Functions folder for examples.