Passing a hashtable as an argument to a function in PowerShell

后端 未结 2 1841
悲&欢浪女
悲&欢浪女 2020-12-11 02:33

I have a problem in a PowerShell script:

When I want to pass a Hashtable to a function, this hashtable is not recognized as a hashtable.

function get         


        
相关标签:
2条回答
  • 2020-12-11 03:00

    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
    
    0 讨论(0)
  • 2020-12-11 03:03

    $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

    0 讨论(0)
提交回复
热议问题