PowerShell更新trap外的变量


如何在trap内更新trap外的变量,今天算是困扰了我一会了。先看下面的脚本:

$count=0
1..3 | foreach {
 trap {
 $count++
 "捕获到错误 count = $count"
 continue
 }
 1/$null
}
"最终的 count = $count"

输出为:

捕获到错误 count = 1
捕获到错误 count = 1
捕获到错误 count = 1
最终的 count = 0

显然这不是我期望的,我期望的是统计捕获的错误数。怎么改呢?在第4行后插入:

 Set-Variable -Name 'count' -Value $count -Scope 1

原因:PowerShell的变量存在作用域,默认低作用域对高作用域只有读权限,如果要从低作用域更改高作用域变量,需要使用命令:Set-Variable,并逐层递加指定作用域(Scope)。

本文链接: https://www.pstips.net/modify-variable-outer-trap.html
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!

关于 Mooser Lee

我是一个Powershell的爱好者,创建了PowerShell中文博客,热衷于Powershell技术的搜集和分享。本站部分内容来源于互联网,不足之处敬请谅解,并欢迎您批评指正。

发表评论

您的电子邮箱地址不会被公开。 必填项已用 * 标注