如何确定是否在Powershell中调用了一个函数

时间:2015-04-12 06:49:21

标签: powershell powershell-v3.0 powershell-v4.0 function-call

我有一个大脚本,如果已经调用了函数调用,我想忽略它。

我有一个标志,现在设定为确定。但是,我如何做到这一点,而无需为此标记或计数。

谢谢!

3 个答案:

答案 0 :(得分:7)

你可以让函数重写自己,在第一次调用后基本上成为noop:

function TestFunction
 {
   'Do Stuff'
   function Script:TestFunction { Return }
 }

答案 1 :(得分:1)

这样的事可能会对你有所帮助:

function A
{
    Write-Host "calling function A"
}

function B
{
    Write-Host "calling function B"
}

function C
{
    Write-Host "calling function C"
}

function All
{
    A

    if (!$script:BHasBeenCalled)
        { B }

    C
}

Get-PSBreakpoint | Remove-PSBreakpoint
Set-PSBreakpoint -Command B -Action { $script:BHasBeenCalled = $true } | Out-Null

$script:bHasBeenCalled = $false

#First call: B should be invoked
All

#Second call: B shouldn't be invoked
All

答案 2 :(得分:-1)

如果该功能已被调用,则它已加载并显示在Ps驱动器功能中。

function test1 {
    # define a function
    function test2 {return}
    # call it
    test2
    # check it was called
    dir function:\test2
}
test1