Rob*_*man 5 powershell powershell-ise
我在Windows Server 2008r2上运行64位Powershell ISE.
在调试时我设置了一个变量:
$dbName = "db1"
Run Code Online (Sandbox Code Playgroud)
然后,我做了以下更改
$dbName = "db2"
Run Code Online (Sandbox Code Playgroud)
我再次单步执行脚本,即使调试器跨过修改后的行,当我将鼠标悬停在$ dbName变量上时,它仍显示值"db1".我似乎可以解决这个问题的唯一方法是重启那个ISE - 这很痛苦!
谁能告诉我哪里出错了?
*更新*
我在模块中有以下功能:
Function SampleFunction()
{
$dbName = "db1"
write-host $dbName
}
Run Code Online (Sandbox Code Playgroud)
我有一个powershell脚本导入moduleL
Import-Module -Name ".\BadPsm.psm1"
Run Code Online (Sandbox Code Playgroud)
从powershell ISE我在执行函数之前在$ dbName ="db1"上放置一个断点,方法是在执行窗口中输入"SampleFunction".一切都很好,值"db1"被写入输出窗口.
然后我更改函数,以便$ dbName ="db2".我通过再次执行Import-Module -Name".\ BadPsm.psm1"重新导入模块.
当我再次执行该函数时,我点击断点,跳过并看到$ dbName仍等于"db1","db1"也写入输出窗口.
为了帮助说明我已经在youtube上发布了一个简短的截屏视频:youtube链接
您的视频显示更改模块后,在再次调用import-module之前没有卸载它.为同一个模块第二次调用Import-Module什么都不做,因为它已经加载了.这就是你看到旧功能的结果的原因.
解决方案是在第二次调用Import-Module之前调用Remove-Module.或者使用Import-Module的-Force参数强制重新加载.
Import-Module -Name ".\BadPsm.psm1" -Force
Run Code Online (Sandbox Code Playgroud)
退出PowerShell ISE有帮助的原因是因为你开始新鲜.它与PowerShell ISE无关.您还会在PowerShell控制台中看到此效果.
其他人尝试并且无法重现您所看到的内容的原因是因为他们没有使用模块,因此每次更改代码时,都会运行更改的代码.
归档时间: |
|
查看次数: |
4504 次 |
最近记录: |