**更新**
原来我只是一个白痴。在psm1文件中多次定义了相同的函数,每个函数都有自己的帮助文本副本。删除额外定义和编辑帮助文本会产生预期的行为。
我已将此问题标记为主持人审核和删除。
我有一个psm1模块文件和相应的psd1清单。
$varTable = @{}
$varTable.Add('Key1','First Example Value')
$varTable.Add('Key2','Second Example Value')
function Test-Function{
Write-Host "Hello World"
<#
.EXAMPLE
Test-Function
This Function simply prints Hello World.
This is an extra line in this example text that I will delete later.
#>
}
Export-ModuleMember -Variable "*"
帮助评论中的一个示例包含一些我想要删除的文本。我的问题是,无论我做什么来编辑函数的帮助文本,它在我加载模块时都不会真正改变。案文保持不变。
如果我更改$ varTable以添加一个新键,如:
$varTable.Add('NewKey','New Value')
然后当我重新加载模块时,无论是通过Import-Module ModuleName -force还是关闭我的会话,或者我甚至尝试重新启动计算机,$ varTable都会按预期更改,但示例中的额外行当我执行Get-Help Test-Function -Full时,文本永远不会消失。
我已确认编辑通过以下命令保存到磁盘:
Get-ChildItem $psHome\Modules\ModuleName\ModuleName.psm1 | %{Notepad.exe $_.FullName}
我在记事本中看到的文字显示文字消失了,它还显示了对$ varTable的编辑,但是当我运行Get-Help时文本永远不会改变。
此时我实际上已经走了这么远,因为删除了我所有功能的所有基于注释的帮助,重新启动并重新加载模块,如果我调用Get-Help,所有基于注释的帮助仍会显示在我的一个模块功能上。但是,每次编辑时,如果我在$ varTable中更改键的名称或更改键的数量,或者即使我添加一个全新的变量,一个简单的Import-Module ModuleName -Force就足以使改变我的会议。
是否有某种缓存我没有清除?
我已经看到有一些类似的问题,其中-force开关有效,但我将这个问题作为一个新问题发布,因为这些问题已经过时并且没有解决我的问题。
谢谢, 比尔
**更新**
我刚删除了psm1中的所有函数,以便所有模块都分配了一个变量。 Get-Command -Module ModuleName什么都没有返回,尝试使用Get-Help FunctionName返回一个错误,找不到帮助主题。
然后我添加了函数定义,根本没有基于注释的帮助,只是函数代码。当我运行Get-Help FunctionName时,它会返回完整的帮助主题,甚至不再存在。
答案 0 :(得分:1)
缓存有关模块的信息。您可以像这样刷新缓存:
Get-Module ModuleName -Refresh
顺便说一句,你是在更改之间移除模块,例如:
Remove-Module ModuleName
Import-Module ModuleName