我正在使用Windows PowerShell ISE编写PowerShell脚本。当我更改脚本并运行脚本时,执行的不是最新保存的版本,而是旧版本。只有第二次运行脚本时它才会使用当前版本。我该怎么做才能始终运行最新版本的脚本?
我正在使用Windows PowerShell ISE编写PowerShell脚本。当我更改脚本并运行脚本时,执行的不是最新保存的版本,而是旧版本。只有第二次运行脚本时它才会使用当前版本。我该怎么做才能始终运行最新版本的脚本?
这是一个很老的问题,但我认为我也遇到了同样的问题。在我的情况下,在调用后定义了一个函数。它似乎起作用,但只是因为“myfunc”仍然具有先前调用的值。如果更改“Hello,World!”,您会发现新值仅在第二次尝试时生效。
Invoke-Command -ScriptBlock ${function:myfunc}
function myfunc() {
Write-Host "Hello, World!"
}
function myfunc() {
Write-Host "Hello, World!"
}
Invoke-Command -ScriptBlock ${function:myfunc}
编辑完后,您需要通过点操作来重新源化脚本。假设您在当前目录中有一个名为MyScript.ps1的文件,在控制台中运行以下命令:
. .\MyScript.ps1
. .\MyScript.ps1
MyFunction
我的ISE“缓存”旧文件的经验:
ISE对PS模块(.psm1)和简单的PS脚本(ps1)的行为不同。我正在使用Win10Pro的PS&ISE。
A) 我对模块(.PSM1)的经验
B) 我对脚本(.PS1)的经验。
C)以下是我使模块开发更加舒适的解决方法:
因此,如果我在ISE开发中修改模块文件,我总是先执行“运行脚本”,然后再通过“运行选择”执行函数。
通过这种方式,我始终执行当前版本的函数。
虽然我的问题有点不同,但这个问题和答案对我找到解决方案非常有帮助。很难找到关于ISE“缓存”的这样的问题和如此有用的答案。
真诚地 Rolf