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
我有一个大脚本,我想忽略已经调用过的函数调用。
我现在设置了一个标志来确定这一点。但是我如何做到这一点而不需要有一个标志或计数。
谢谢!
类似的内容可能会对您有所帮助:
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