Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 24 additions & 42 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,18 +1,12 @@
# 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](https://github.com/PSModule) for building, testing, and publishing the module.
Hashtable is a comprehensive PowerShell module for working with hashtables. It converts hashtables to and from
PSCustomObjects, formats hashtables into readable PowerShell code, merges hashtables with override support, and removes
entries based on specific criteria — simplifying complex hashtable manipulations in your automation workflows.

## Installation

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

```powershell
Install-PSResource -Name Hashtable
Expand All @@ -21,11 +15,9 @@ Import-Module -Name Hashtable

## Usage

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

### Example 1: Converting a Hashtable to a PSCustomObject
### Example: Convert 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.
Convert a nested hashtable into a PSCustomObject, making it easier to manipulate and explore your data.

```powershell
$hashtable = @{
Expand All @@ -41,10 +33,10 @@ $object = $hashtable | ConvertFrom-Hashtable
$object | Format-List
```

### Example 2: Merging Hashtables
### Example: Merge hashtables with overrides

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

```powershell
$defaultSettings = @{
Expand All @@ -61,10 +53,10 @@ $mergedSettings = $defaultSettings | Merge-Hashtable -Overrides $userSettings
$mergedSettings
```

### Example 3: Formatting a Hashtable as PowerShell Code
### Example: Format 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.
Convert a hashtable into a nicely formatted PowerShell code representationuseful for exporting configuration to a
`.psd1` file.

```powershell
$configuration = @{
Expand All @@ -81,39 +73,29 @@ $formattedConfig = $configuration | Format-Hashtable
Write-Output $formattedConfig
```

### Example 4: Removing Hashtable Entries Based on Criteria
### Example: Remove hashtable entries by criteria

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

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

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

You can 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 visit the
[Hashtable docs](https://psmodule.io/Hashtable/) or [PSModule Docs](https://psmodule.io/docs).

## Contributing
Documentation is published at [psmodule.io/Hashtable](https://psmodule.io/Hashtable/).

Coder or not, you can contribute to the project! We welcome all contributions.
Use PowerShell help and command discovery for module details:

### 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](CONTRIBUTING.md) 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.
```powershell
Get-Command -Module Hashtable
Get-Help -Name ConvertTo-Hashtable -Examples
```
Loading