回答

7

可以使函數本身重新寫,基本上成爲首調用後一個空操作:

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

太棒了!那就是我一直在尋找的東西。簡單的東西,謝謝! –

+0

這似乎對整個PowerShell會話都有效?有沒有辦法可以檢查每個腳本運行,即使在相同的PowerShell會話? –

+0

您是在ISE中測試還是在實際的Powershell控制檯會話中測試?腳本:TestFunction應該將其隔離爲當前腳本的範圍,但是在ISE中的範圍作用有點不同。 – mjolinor

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 
-1

如果該功能已經被稱爲,它被加載並出現在函數Ps驅動器中。

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