Skip to content

Hashtable

Hashtable is a comprehensive module that provides functions for working with PowerShell hashtables. It enables you to convert hashtables to PSCustomObjects and vice versa, format hashtables into readable PowerShell code, merge hashtables with override support, and remove entries based on specific criteria. This collection of utilities is designed to simplify complex hashtable manipulations and help automate your PowerShell workflows.

Prerequisites

This module uses the following external resources: - The PSModule framework for building, testing, and publishing the module.

Installation

To install the module from the PowerShell Gallery, you can use the following command:

Install-PSResource -Name Hashtable
Import-Module -Name Hashtable

Usage

Below are some examples illustrating typical use cases for the module.

Example 1: Converting a Hashtable to a PSCustomObject

This example demonstrates how to convert a nested hashtable into a PSCustomObject, making it easier to manipulate and explore your data.

$hashtable = @{
    Name    = 'Alice'
    Age     = 30
    Contact = @{
        Email = 'alice@example.com'
        Phone = '123-456-7890'
    }
}

$object = $hashtable | ConvertFrom-Hashtable
$object | Format-List

Example 2: Merging Hashtables

Merge a default settings hashtable with user-specified overrides. In this example, the values in the override hashtable replace those in the main hashtable.

$defaultSettings = @{
    Theme    = 'Light'
    Language = 'en'
    Layout   = 'Standard'
}
$userSettings = @{
    Theme  = 'Dark'
    Layout = 'Compact'
}

$mergedSettings = $defaultSettings | Merge-Hashtable -Overrides $userSettings
$mergedSettings

Example 3: Formatting a Hashtable as PowerShell Code

Convert a hashtable into a nicely formatted PowerShell code representation. This is especially useful for exporting configurations to a .psd1 file.

$configuration = @{
    Server      = 'localhost'
    Port        = 8080
    Credentials = @{
        Username = 'admin'
        Password = 'P@ssw0rd'
    }
    Enabled     = $true
}

$formattedConfig = $configuration | Format-Hashtable
Write-Output $formattedConfig

Example 4: Removing Hashtable Entries Based on Criteria

Remove specific entries from a hashtable, such as keys with null or empty values, or those matching a particular name.

$ht = @{
    ValidKey  = 'SomeValue'
    EmptyKey  = ''
    RemoveMe  = 'Unwanted'
}

# Remove entries with null or empty values and keys named 'RemoveMe'
$ht | Remove-HashtableEntry -NullOrEmptyValues -Keys 'RemoveMe'
$ht

For more examples, please refer to the examples folder. You can also use Get-Command -Module 'Hashtable' to list available commands, and Get-Help -Examples <CommandName> to view command-specific examples.

Documentation

Detailed documentation for each function is available via inline help. For more extensive documentation, please check the docs folder or visit the online documentation at PSModule Documentation.

Contributing

Coder or not, you can contribute to the project! We welcome all contributions.

For Users

If you don't code, your feedback is invaluable. If you encounter issues, unexpected behaviors, or missing functionality, please submit a bug report or feature request via the project's issues page.

For Developers

If you code, we'd love to see your contributions. Please review the Contribution Guidelines for more details. You can start by picking up an existing issue or submitting a new one if you have an idea for a new feature or improvement.