13

Is there a resource on how to pass in a Object[] as a parameter within a PowerShell function?

Both of these functions are cmdlets and they are being exported correctly, but I cannot see the $Return object in my second function.

Is something like the following needed?

ParameterAttribute.ValueFromPipeline Property (System.Management.Automation)

# Within PowerShell code

$Return = My-Function -Param "value" # $Return is of type Object[]
$ModifiedReturn = My-SecondFunction -Input $Return

Where this is my function definition:

function My-SecondFunction
{
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$True)]
        [Object[]]$Input
    )
    begin {}
    process
    {
        Write-Host "test: $Input" # Does not return anything
    }
    end {}
}

1 Answer 1

9

$Input is the name of an automatic variable. Use a different name.

I recommend $InputObject as that is in common usage so it has a well-understood meaning, but usually that means you are accepting pipeline input as well.

Of course if there's a name that's more descriptive for this parameter, you should use that.

I have submitted this issue on the PowerShell GitHub project suggesting that Set-StrictMode be modified to check for automatic variable assignment.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.