当前位置: 首页 > 知识库问答 >
问题:

强势 ISE 缓存变量值?

上官恩
2023-03-14

我正在Windows Server 2008r2上运行64位Powershell ISE。

调试时,我设置了一个变量,如下所示:

$dbName = "db1"

然后,我进行以下更改:

$dbName = "db2"

我再次单步执行脚本,即使调试器跨过修改后的行,当我将鼠标悬停在$dbName变量上时,它仍然显示值“db1”。我似乎唯一能解决这个问题的方法是重新启动ISE-这是一个痛苦!

有人能告诉我我哪里错了吗?

*更新*

我在一个模块中有以下功能:

Function SampleFunction()
{
    $dbName = "db1"
    write-host $dbName
}

我有一个导入模块的powershell脚本

Import-Module -Name ".\BadPsm.psm1"

在powershell ISE中,在执行函数之前,我在$dbName = "db1 "上放置了一个断点,方法是在执行窗口中输入“SampleFunction”。一切正常,值“db1”被写入输出窗口。

然后更改函数,使$dbName=“db2”。我通过再次执行import module-Name“\BadPsm.psm1”重新导入模块。

当我再次执行函数时,我点击了断点,跨过一步,可以看到$dbName仍然等于“db1”,“db1”也被写入输出窗口。

为了帮助说明,我在youtube上发布了一个简短的截屏视频:youtube链接

共有2个答案

邢俊悟
2023-03-14

你可以使用“删除变量”cmdlet 来清理它,而不必退出电源外壳 ISE。您也可以简单地将变量设置为$null,尽管它仍然存在。

$myvar = $null;
Remove-Variable -Name myvar;
宋耀
2023-03-14

您的视频显示,在更改模块后,您没有在再次调用导入模块之前卸载它。为同一模块再次调用导入模块不会执行任何操作,因为它已加载。这就是您看到旧函数的结果的原因。

解决方案是在第二次调用导入模块之前调用删除模块。或者使用导入模块的-Force参数强制重新加载。

Import-Module -Name ".\BadPsm.psm1" -Force

退出PowerShell ISE之所以有帮助,是因为这样您可以重新开始。这与PowerShell ISE无关。您还可以在PowerShell控制台中看到这种效果。

其他人尝试过但无法重现您所看到的内容的原因是因为他们没有使用模块,所以每次他们更改代码时,都会运行更改的代码。

 类似资料:
  • This tells Smarty whether or not to cache the output of the templates. By default this is set to 0, or disabled. If your templates generate redundant redundant content, it is advisable to turn on cach

  • This is the name of the directory where template caches are stored. By default this is "./cache", meaning that it will look for the cache directory in the same directory as the executing php script. Y

  • This is the length of time in seconds that a template cache is valid. Once this time has expired, the cache will be regenerated. $caching must be set to "true" for $cache_lifetime to have any purpose.

  • ISE

    ISE(Iris Server Engine)是一个基于现代C++的跨平台(Linux和Windows)的高性能多线程并发网络服务器程序框架。它封装了琐碎的socket以及各种操作系统APIs,以面向对象方式向开发者提供稳定、高效、易扩展、易配置、易维护的程序框架。ISE的用户只需遵循接口的约定,挂接自己的业务程序,即可轻松开发出稳定、高效的网络服务器程序。 ISE的主要特点: 跨平台。目前支持L

  • If set to true, Smarty will respect the If-Modified-Since header sent from the client. If the cached file timestamp has not changed since the last visit, then a "304 Not Modified" header will be sent

  • You can supply a custom function to handle cache files instead of using the built-in method using the $cache_dir. See the custom cache handler function section for details. 你可以提供一个自定义函数来处理缓存文件,而不是通过变量