【发布时间】:2021-11-19 12:07:56
【问题描述】:
我正在 VSCode 中练习 Powershell。 我注意到当我按 F5 运行我的脚本时,Powershell 运行脚本的以前版本(在我的更改之前)。编辑后我肯定会保存文件。 因此,例如,我可能会更改此行中的文本:
Add-Content -Path "D:\Text_File.txt" -value "$_ - MP3 File count is: $Cnt"
但它会继续显示相同的输出,直到我第二次运行它。
这是我正在使用的脚本,以防相关:
Param(
[string]$Path = 'D:\WMA - BU of wma music files',
[string]$DestinationPath = "D:\WMA-Only",
[string]$OutputFileDest = "D:\Text_File.txt"
)
$MainDirList = Get-ChildItem -Path $Path -Directory | ForEach-Object {$_.FullName}
$MainDirList | Out-File -FilePath D:\Text_File.txt
$MainDirList | WriteFolder
function WriteFolder
{
process
{
$FilteredList = Get-ChildItem -Path $_ -Force -Recurse -Filter "*.mp3"
$Cnt = $FilteredList.count
Add-Content -Path "D:\Text_File.txt" -value "$_ - MP3 File count is: $Cnt"
}
}
Visual Studio 代码版本为 1.62.2 Powershell 扩展是 v2021.10.2
我想知道我是否打算在脚本末尾清除变量等? 我在最新版本的notepad++中查看输出
【问题讨论】:
-
可能是因为您在另一个函数中定义了一个函数?通常,当您运行脚本时,它会在运行脚本之前找到任何函数并对其进行预处理。但在你的情况下,它只处理外部函数,它只在运行时创建内部函数。
-
@SteveTaylor,值得一看。感谢您的领导。我会看到的。
-
我添加了一个答案,以防万一它有帮助 - 通常最佳做法是在脚本的标题中描述所有函数,或者作为脚本的单独模块 (*.psm1)加载。
-
我玩过这个想法,但我没有解决这个问题。我将函数放入不同的文件中,起初我得到了相同的行为。我删除了“进程”块,输出没有更新,但是多次尝试后输出没有更新。很明显,函数被存储在某个地方。
-
哦,如果您现在将函数存储在外部,这是一个稍微不同的问题 - 如果您已经从另一个文件(可能通过
Import-Module)加载它,您将必须应用-Force参数从第二次运行开始,以确保它覆盖存储的脚本。Import-Module $myModule -Force
标签: powershell visual-studio-code