在函数中增加PowerShell中的变量

use*_*140 13 powershell

如何在PowerShell函数中增加变量?

我正在使用下面的示例,没有任何数据输入到该函数.我想在每次调用函数时递增变​​量.变量$ increment添加了1,然后在脚本完成时显示$ increment的总和.

运行以下时的总数为0,而我想要的结果是4,因为函数comparethis已运行4次,每次$ increment增加1.

 $incre = 0

 function comparethis() {
     # Do this comparison

    $incre++
    Write-Host $incre
 }

 comparethis #compare 2 variables
 comparethis #compare 2 variables
 comparethis #compare 2 variables
 comparethis #compare 2 variables

 Write-Host "This is the total $incre"
Run Code Online (Sandbox Code Playgroud)

Ste*_*enP 25

您正在遇到动态范围问题.请参阅about_scopes.函数$ increment内部未定义,因此从全局范围复制.全局$ increment不会被修改.如果您想修改它,您可以执行以下操作.

$incre = 0

function comparethis() {
    #Do this comparison

    $global:incre++
    Write-Host $global:incre
}

comparethis #compare 2 variables
comparethis #compare 2 variables
comparethis #compare 2 variables
comparethis #compare 2 variables

Write-Host "This is the total $incre"
Run Code Online (Sandbox Code Playgroud)

  • 在上面的示例中,您可能更希望将`$ incre`变量视为脚本级变量,而不是全局变量.在这种情况下,你应该使用`$ Script:incre`而不是`$ Global:incre` (4认同)