我必须在这里找不到简单的东西。
我在ps1文件中的一个函数中实现了一些帮助注释:
<#
.SYNOPSIS
Adds a file name extension to a supplied name.
.DESCRIPTION
Adds a file name extension to a supplied name.
Takes any strings for the file name or extension.
.PARAMETER Name
Specifies the file name.
.PARAMETER Extension
Specifies the extension. "Txt" is the default.
.INPUTS
None. You cannot pipe objects to Add-Extension.
.OUTPUTS
System.String. Add-Extension returns a string with the extension or file name.
.EXAMPLE
C:\PS> extension -name "File"
File.txt
#>
当我运行Get-Help&#34;功能名称&#34;直接在函数之后并通过powershell窗口运行ps1脚本,我得到正确的响应。
现在,我正在使用此处的代码:http://ben.neise.co.uk/scriptdocumentationinmarkdown/
这假设从我的脚本文件中的帮助注释生成一些Markdown文档。运行时我收到错误:
GenerateScriptDocumentationInMarkdown : Inline help not found for script C:\****\testScript.ps1
(GenerateScriptDocumentationInMarkdown是函数名称)。
它出错的行是我用一些文件路径调用函数的行:
GenerateScriptDocumentationInMarkdown -SourceScriptFolder "C:\****\testScripts" -DocumentationOutputFolder "C:\****\GeneratingMarkdownFileTest" -DocumentationIndexPath "C:\****\GeneratingMarkdownFileTest\scripts_Ps1.markdown"
脚本中找不到内联帮助的内容&#39;错误意味着什么?
编辑
以下是脚本失败的地方:
$help = Get-Help $script.FullName -ErrorAction "SilentlyContinue"
if ($help.getType().Name -eq "String"){
# If there's no inline help in the script then Get-Help returns a string
Write-Error -Message "Inline help not found for script $($script.FullName)"
} else {
注意条件检查.Name是否为string类型。在我看来,我的脚本上的Get-Help没有返回它想要的内容。
我希望'get-help {pathtofile.ps1}'
会返回脚本文件中的所有注释,但它返回的只是脚本名称?
答案 0 :(得分:0)
感谢@Bacon Bits。
由于评论是在函数中,我错误地解释了生成函数的作用。我必须做的是遍历脚本文件中的函数,然后在函数而不是整个文件上运行逻辑。
所以只在这个文件中获取函数:
$currentFunctions = Get-ChildItem function:
# dot source your script to load it to the current runspace
. $script.FullName
$scriptFunctions = Get-ChildItem function: | Where-Object { $currentFunctions -notcontains $_ }
$scriptFunctions | ForEach-Object {
& $_.ScriptBlock
}
然后循环并运行逻辑:
$scriptFunctions | ForEach-Object {
$fullName = $_.Name
$help = Get-Help $fullName -ErrorAction "SilentlyContinue"
.
.
.