A curated collection of over 160 PowerShell functions. Many functions written by me. Others are attributed wherever possible.

Minimum PowerShell version


Installation Options

Copy and Paste the following command to install this package using PowerShellGet More Info

Install-Module -Name PoshFunctions -RequiredVersion 2.2.4

You can deploy this package directly to Azure Automation. Note that deploying packages with dependencies will deploy all the dependencies to Azure Automation. Learn More

Manually download the .nupkg file to your system's default download location. Note that the file won't be unpacked, and won't include any dependencies. Learn More


Bill Riedy


(c) 2021 Bill Riedy. All rights reserved.

Package Details



base64 beep binaryip calendar capslock color-hex color-rgb color-show computersite computer-site credential date-random datetime date-truncate days-week decimalip display dns-async dotteddecimalip email-address expand-string expand-tab exponentiation file file-encoding file-invalidchar folder format functions gui ini inputbox ip iprange isadmin isdate ishexstring isnumeric isvalidemail isvalidip library macaddress magic8ball markdown md5sum msgbox numlock ping-async popup progress random-date registry reverse-string rot13 round savefile scrolllock set-type share-permission share-stat shortcut sid speak subnetmask system timezone urlencode utc wrap-text xml


Compare-ObjectProperty Compare-PSGalleryObject Convert-HexToRGB Convert-Int32ToUint32 Convert-ObjectToHashtable Convert-RGBToHex Convert-ROT13 Convert-SecureStringToString Convert-UserFlag ConvertFrom-Base64 ConvertFrom-Binary ConvertFrom-DateTime ConvertFrom-FsRight ConvertFrom-Hex ConvertFrom-UrlEncode ConvertFrom-UTC ConvertFrom-Xml ConvertTo-Base64 ConvertTo-Binary ConvertTo-BinaryIPv4 ConvertTo-Bool ConvertTo-DateTime ConvertTo-DecimalIPv4 ConvertTo-DottedDecimalIPv4 ConvertTo-Hex ConvertTo-OrderedDictionary ConvertTo-UncPath ConvertTo-UrlEncode ConvertTo-UTC Copy-Object Eexit Expand-IPv6 Expand-String Expand-Tab Export-CSVSortedColumn FileSizeAbove FileSizeBelow Format-MacAddress Format-RandomCase Format-ReverseString Format-ReverseToken Format-SortedList Format-TitleCase Format-WrapText Get-Address Get-BashPath Get-BinaryType Get-ComputerSite Get-ComputerUptime Get-DiceRoll Get-DNSHostEntryAsync Get-DriveStat Get-Enum Get-ExecutableForFile Get-FileEncoding Get-FileName Get-FileWithLeadingSpace Get-FolderName Get-Font Get-Fortune Get-GeoCode Get-InvalidFileCharacter Get-IpRange Get-LastDayInMonth Get-LongName Get-MachineType Get-MacVendor Get-Magic8Ball Get-Md5Sum Get-NetworkCredential Get-NTFSPermission Get-NtpDate Get-Power Get-PrintableAscii Get-PrivateProfileComment Get-PrivateProfileSection Get-PrivateProfileSectionNames Get-PrivateProfileString Get-PSWho Get-RandomDate Get-RandomHexDigit Get-RandomMacAddress Get-RegExpandString Get-RegistryValue Get-Round Get-SaveFileName Get-Shortcut Get-ShortName Get-SID Get-SpecialFolder Get-SqlDatabase Get-SqlIndexFragmentation Get-SqlStoredProcedure Get-StaticProperty Get-SubnetMaskIPv4 Get-TruncatedDate Get-Type Get-TypeAccelerator Get-UrlContent Get-WordCount Get-WordList grep Invoke-Beep Invoke-CountdownTimer Invoke-Speak Join-Object Lock-Workstation Measure-Char mklink Move-ToRecycleBin New-Credential New-InputBox New-InputBoxSecureString New-Popup New-QR New-RandomPassword New-Screenshot New-Shortcut Optimize-SqlIndexFragmentation Optimize-SqlStoredProcedure Out-PDFToPrinter Read-HostWithDefault Remove-BlankOrComment Remove-EmptyProperty Remove-QuotesFromCsv Remove-TeamsCache Remove-Trailing Reset-Desktop Resolve-FQDN Resolve-HostName sed Set-Capslock Set-Display Set-Numlock Set-PrivateProfileComment Set-PrivateProfileString Set-Scrolllock Set-Speaker Set-Type Set-WindowStyle Show-AllColor Show-Calendar Show-Color Show-ColorsWithBackground Show-DaysOfWeek Show-FileAttribute Show-FsRight Show-Month Show-NamedColor Show-Object Show-Progress Show-ShortDaysOfWeek Show-ShortMonth Show-SubnetMaskIPv4 Show-Timezone Start-ADReplication Start-RecordSession Stop-RecordSession Switch-Mute Test-ConnectionAsync Test-IsAdmin Test-IsCapsLock Test-IsDate Test-IsFileLocked Test-IsHexString Test-IsNull Test-IsNumeric Test-IsNumLock Test-IsScrollLock Test-IsValidEmailAddress Test-IsValidIPv4 Test-IsValidIPv6 Test-Network Test-NtpDateVsNow Test-Password Test-Port Union-Object Update-ExplorerIcon Write-StringArray Write-TextMenu


This module has no dependencies.

Release Notes

For full release notes see ReleaseNotes.txt

### 2.2.4
* added Get-SqlDatabase
* added Get-SqlIndexFragmentation
* added Get-SqlStoredProcedure
* added Optimize-SqlIndexFragmentation
* added Optimize-SqlStoredProcedure

### 2.3.3
* added Invoke-CountdownTimer to implement a count down timer. Accurate to within several seconds

### 2.2.2
* Changed to SemVer versioning, 3 positions Major#.Minor#.Build#
* added Convert-Int32ToUint32 to aid in converting 32 bitmasks which are interpreted as negative int32 numbers, returned from things like (Get-Acl -Path $pwd).Access.FileSystemRights
* added Format-ReverseToken to take a tokenized string like 'monster.google.com' and convert it to 'com.google.monster'
* added New-InputBoxSecureString which will prompt for value and return a secure string. Can optionally verify input, and specify labels for input box(es)
* renamed Get-FolderName from Get-Folder to not conflict with Vmware module. Aliased to Get-Folder for backward compatibility
* renamed Get-SaveFileName from Get-SaveFile to be more consistent across file/folder functions. Aliased to Get-SaveFile for backward compatibility
* updated Convert-RGBToHex to better handle color specifications
* updated ConvertTo-DateTime because of logic error in handling Unix datetime strings
* updated Get-BashPath to include switch so as to not resolve path to existing path on the system
* updated Get-FileWithLeadingSpace to just produce the fullname of the files
* updated Get-Fortune and added -Speak switch
* updated Get-NTFSPermission to use Convert-Int32ToUint32 for certain filesystem rights, like -1610612736 corresponds to GenericExecute,GenericRead and previously the negative number would throw an error as it is really a 32 bitmask and not an int32
* updated Test-Port so that the results are given in the Process block and not wait until the End block
that the results are given in the Process block and not wait until the End block


Version History

Version Downloads Last updated
2.2.9 1,614 9/30/2022
2.2.8 1,359 2/25/2022
2.2.7 232 11/17/2021
2.2.6 212 8/2/2021
2.2.5 9 8/2/2021
2.2.4 (current version) 46 6/30/2021
2.2.3 32 6/3/2021 169 3/23/2021 62 2/15/2021 27 2/8/2021 61 12/17/2020 78 10/27/2020 17 10/12/2020 11 10/12/2020
Show less