Powershell如何判断一个函数是否被调用

How to determine if a function has been called in Powershell

我有一个大脚本,我想忽略已经调用过的函数调用。

我现在设置了一个标志来确定这一点。但是我如何做到这一点而不需要有一个标志或计数。

谢谢!

类似的内容可能会对您有所帮助:

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

您可以让函数自行重写,在第一次调用后实质上变成一个 noop:

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

如果该函数已经被调用,它会被加载并出现在函数 Ps 驱动器中。

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