powershellreservedautomatic-variable

Passing arguments as array to PowerShell function


I'm trying to figure out how I can pass multiple strings as an array to a powershell function.

function ArrayCount([string[]] $args) {
    Write-Host $args.Count
}

ArrayCount "1" "2" "3"
ArrayCount "1","2","3"
ArrayCount @("1","2","3")

Prints

2
0
0

How can I pass an array with 3 values to the ArrayCount function? Why is the Count zero for some of the invocations?


Solution

  • In PowerShell, $args is a automatic variable that refers to unnamed arguments. Just change your parameter name:

    function ArrayCount([string[]] $myParam) {
        Write-Host $myParam.Count
    }
    

    And you will get the expected output:

    1
    3
    3