Dstr0
Dstr0

Reputation: 145

PowerShell - Call a function created in another function

When I run this:

function Setup-One{

    function First-Function{
    Write-Host "First function!"
    }

    function Second-Function{
    Write-Host "Second function!"
    }
}
Setup-One

And than I call First-Function or Second-Function, PS says that they don't exist. What am I doing wrong?

Upvotes: 3

Views: 1225

Answers (1)

Mathias R. Jessen
Mathias R. Jessen

Reputation: 175085

Function definitions are scoped, meaning that they stop existing when you leave the scope in which they were defined.

Use the . dot-source operator when invoking Setup, thereby persisting the nested functions in the calling scope:

function Setup-One{

    function First-Function{
    Write-Host "First function!"
    }

    function Second-Function{
    Write-Host "Second function!"
    }
}
. Setup-One

# Now you can resolve First-Function/Second-Function
First-Function
Second-Function

See the about_Scopes help topic for moreinformation on scoping in PowerShell

Upvotes: 10

Related Questions