3

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?

phuclv
  • 37,963
  • 15
  • 156
  • 475
Dstr0
  • 95
  • 2
  • 13

1 Answers1

9

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

Mathias R. Jessen
  • 157,619
  • 12
  • 148
  • 206