Passing a hashtable as an argument to a function in PowerShell

I'm not really sure what to comment here, it seems self-explanatory. If not, leave a comment and I'll clarify.

$ExampleHashTable = @{
    "one" = "the loneliest number"
    "two" = "just as bad as one"
}

Function PassingAHashtableToAFunctionTest {
    param(
        [hashtable] $PassedHashTable,
        [string] $AHashTableElement
    )

    Write-Host "One is ... " 
    Write-Host $PassedHashTable["one"]
    Write-Host "Two is ... " 
    Write-Host $AHashTableElement
}

PassingAHashtableToAFunctionTest -PassedHashTable $ExampleHashTable `
    -AHashTableElement $ExampleHashTable["two"]

Output:

One is ... 
the loneliest number
Two is ... 
just as bad as one

$Input is an automatic variable that enumerates the input given.

Chose any other variable name and it'll work - although not necessarily as you might expect - to get the number of entries in a hashtable you need to inspect the Count property:

function Get-Length {
    param(
        [hashtable]$Table
    )

    $Table.Count
}

Write-Output is implied when you just leave the $Table.Count as is.

Also, the () suffix in the function name is unnecessary syntactic sugar with zero meaning when you declare your parameters inline with Param() - drop it

Tags:

Powershell