Call powershell function in file without dot sourcing

后端 未结 2 1385
无人及你
无人及你 2021-01-18 22:06

Is this possible if I only have one function in the file named the same as the file? I seem to remember reading about it before. Something like this:

hello.ps1

2条回答
  •  梦毁少年i
    2021-01-18 22:41

    By default, the function hello will only be accessible at script scope unless you dot-source the script. That means, once the script exits, it is no longer visible. If you want it available outside of hello.ps1 without dot-sourcing, you can declare the function at global scope:

    function global:hello {
        Write-Host 'Hello, world' 
    }
    

    Then you can just execute the script and then call the function:

    PS C:\temp> .\hello.ps1
    PS C:\temp> hello
    Hello, world
    

    For more info on powershell scopes, check out the help.

    If you want to just have the code in the function execute, just don't surround it by a function declaration. In hello.ps1:

        Write-Host 'Hello, world' 
    

    Then just call it:

    PS C:\temp> .\hello.ps1
    Hello, world
    

提交回复
热议问题