【发布时间】:2014-01-20 07:11:54
【问题描述】:
我在 Windows Server 2008r2 上运行 64 位 Powershell ISE。
在调试时我设置了一个变量,如:
$dbName = "db1"
然后我进行以下更改
$dbName = "db2"
我再次单步执行脚本,即使调试器越过修改后的行,当我将鼠标悬停在 $dbName 变量上时,它仍然显示值“db1”。我似乎可以解决此问题的唯一方法是重新启动该 ISE - 这很痛苦!
谁能告诉我哪里出错了?
* 更新 *
我在一个模块中有以下功能:
Function SampleFunction()
{
$dbName = "db1"
write-host $dbName
}
我有一个导入 moduleL 的 powershell 脚本
Import-Module -Name ".\BadPsm.psm1"
在 powershell ISE 中,我在 $dbName = "db1" 上放置一个断点,然后在执行窗口中输入“SampleFunction”来执行该函数。一切正常,值“db1”被写入输出窗口。
然后我将函数更改为 $dbName = "db2"。我通过再次执行 Import-Module -Name ".\BadPsm.psm1" 重新导入模块。
当我再次执行该函数时,我遇到了断点,跳过并可以看到 $dbName 仍然等于“db1”,“db1”也被写入了输出窗口。
为了帮助说明,我在 youtube 上发布了一个简短的截屏视频:youtube link
【问题讨论】:
-
您能告诉我们您解决问题所遵循的步骤吗?我已经尝试过了,我似乎无法重新创建问题。我得到的最接近的是在调试时,它会短暂显示旧值,并在 1 秒后刷新以显示新值。
-
我无法使用当前示例重现您的问题,但这听起来像是一个变量范围问题。请提供脚本的精简(删除敏感信息)副本。
-
如果您运行脚本而不是使用调试器会发生什么?
-
IIRC F5 在当前范围内运行脚本。尝试通过键入脚本名称来运行脚本,然后查看问题是否仍然存在。
-
请看我发布到 youtube 上的截屏视频来说明问题。