虚位以待(AD)
虚位以待(AD)
首页 > 脚本专栏 > Powershell > PowerShell实现统计函数嵌套深度

PowerShell实现统计函数嵌套深度
类别:Powershell   作者:码皇   来源:互联网   点击:

这篇文章主要介绍了PowerShell实现统计函数嵌套深度,本文分享一个函数,可以实现统计脚本执行的嵌套层次,需要的朋友可以参考下

当你调用某个函数时,PowerShell会增加一次嵌套层次。当一个函数调用了另一个函数,或着脚本,也会增加嵌套层次。今天分享一个函数,它能告诉你的脚本嵌套的层次:

    function Test-NestLevel{
    $i = 1$ok = $truedo{
    try{
    $test = Get-Variable -Name Host -Scope $i}
    catch{
    $ok = $false}
    $i++}
    While ($ok) $i}

当你调用的函数具有递归调用时,上面的函数非常有用,来看一个调用的示例:

    function Test-Diving{
    param($Depth) if ($Depth -gt 10) {
    return }
    "Diving deeper to $Depth meters..." $currentDepth = Test-NestLevel"calculated depth: $currentDepth" Test-Diving -depth ($Depth+1)}
    Test-Diving -depth 1


当你运行Test-Diving时,函数会调用自己10次。函数使用一个参数来控制嵌套层次,而Test-NestLevel负责返回确切的深度数。

注意这里有个区别:Test-NestLevel返回绝对的嵌套层次,参数会纪录这个函数调用自己多少次。如果Test-Diving被嵌入到另外一个函数中,绝对深度和相对深度会不同。

 

    PS C:> Test-Diving -Depth 1diving deeper to 1 meters...calculated depth: 1diving deeper to 2 meters...calculated depth: 2diving deeper to 3 meters...calculated depth: 3diving deeper to 4 meters...calculated depth: 4diving deeper to 5 meters...calculated depth: 5diving deeper to 6 meters...calculated depth: 6diving deeper to 7 meters...calculated depth: 7diving deeper to 8 meters...calculated depth: 8diving deeper to 9 meters...calculated depth: 9diving deeper to 10 meters...calculated depth: 10 PS C:> & {
    Test-Diving -Depth 1 }
    diving deeper to 1 meters...calculated depth: 2diving deeper to 2 meters...calculated depth: 3diving deeper to 3 meters...calculated depth: 4diving deeper to 4 meters...calculated depth: 5diving deeper to 5 meters...calculated depth: 6diving deeper to 6 meters...calculated depth: 7diving deeper to 7 meters...calculated depth: 8diving deeper to 8 meters...calculated depth: 9diving deeper to 9 meters...calculated depth: 10diving deeper to 10 meters...calculated depth: 11 PS C:>


Test-NestLevel总会返回从当前代码的作用域到全局作用域的嵌套深度。

相关热词搜索: PowerShell 统计 函数 嵌套深度