Есть ли способ заставить Get-Help Powershell 5 проанализировать текущий скрипт?

У меня есть тривиально простой скрипт:

function a-func {

}

<#
.Synopsis
  Testing Get-Help
#>
function another-func {

}

Get-Help another-func

У меня нет машины с Powershell 3 или 4, чтобы перепроверить, но я, кажется, помню, что это работало до PS 5. В консоли Powershell 5.0 это вывод:

C:\Users\Administrator\Documents\WindowsPowerShell> .\testhelp.ps1 Get-Help : Get-Help не удалось найти другую функцию в файле справки в этом сеансе. Чтобы загрузить обновленные разделы справки, введите: «Update-Help». Чтобы получить справку в Интернете, найдите раздел справки в библиотеке TechNet по адресу http://go.microsoft.com/fwlink/?LinkID=107116. В C:\Users\Administrator\Documents\WindowsPowerShell\testhelp.ps1:13 char:1 + Get-Help other-func + ~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: ResourceUnreachable: (:) [Get-Help], HelpNotFoundException + FullyQualifiedErrorId: HelpNotFound,Microsoft.PowerShell.Commands.GetHelpCommand

Я попытался разместить справочный комментарий как непосредственно перед функцией, так и внутри нее.

Является ли это регрессом в Powershell 5 или я делаю это неправильно? Цель состоит в том, чтобы получить вывод справки для каждой функции из скрипта.

Немного подробнее:

> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
5      0      10105  0

> [System.Environment]::OSVersion

Platform ServicePack Version    VersionString
-------- ----------- -------    -------------
 Win32NT             6.3.9600.0 Microsoft Windows NT 6.3.9600.0

person Ben Collins    schedule 26.05.2015    source источник
comment
Я только что попытался воспроизвести проблему в Powershell 4.0 и не смог.   -  person dugas    schedule 26.05.2015
comment
Я также зарегистрировал ошибку подключения: connect.microsoft.com/PowerShell/feedbackdetail/view/1370636/   -  person Ben Collins    schedule 26.05.2015
comment
Я попробовал ваш код на Server 2016 TP2 с PowerShell 5, и он отлично работает. Версия PS: 5.0.10074.0   -  person Peter Hahndorf    schedule 26.05.2015
comment
@PeterHahndorf У меня нет коробки Server 2016, но у меня есть Server 2012 R2 и Windows 8.1; проблема повторяется на обоих   -  person Ben Collins    schedule 26.05.2015
comment
Я попробовал Windows Management Framework 5.0 Preview February 2015 на свежем Windows Server 2012 R2. Ваш код работает нормально. PSVersion 5.0.10018.0 Затем я попробовал Windows Management Framework 5.0 Preview April 2015 PSVersion 5.0.10105.0, и она все еще работает. Просто говорю.   -  person Peter Hahndorf    schedule 26.05.2015
comment
Угу, подтвердил. Спасибо, что проверили меня. Теперь самая неприятная часть: что в моем окружении делает это со мной?   -  person Ben Collins    schedule 26.05.2015
comment
Было ли что-нибудь выявлено в вашем окружении? У меня такая же проблема в PSVersion 5.0.10130 в Windows 10 версии 10.0.10130.0. Я подтвердил, что это работает в PS v2 с точно таким же скриптом.   -  person beavel    schedule 09.06.2015
comment
Можете ли вы подтвердить свою политику выполнения с помощью Get-ExecutionPolicy? У меня была та же проблема, и я фактически запустил Set-ExecutionPolicy без ошибок, но он не установил значение, которое я передал. Мне пришлось добавить -Force, чтобы заставить его работать, а затем Get-Help заработал, как и ожидалось.   -  person beavel    schedule 09.06.2015
comment
@beavel моя политика в настоящее время RemoteSigned   -  person Ben Collins    schedule 10.06.2015
comment
@beavel, на что ты настроил свою политику, когда она сработала?   -  person Ben Collins    schedule 11.06.2015
comment
@BenCollins Вот команда, которую я выполнил Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force, поэтому я сделал RemotSigned. Вы умеете нормально запускать скрипты? У меня этот пример отлично работает, когда он вставляется в консоль с установленным Restricted, но не работает, когда я сохраняю пример в файл. Еще одна вещь, которую я заметил, это то, что он показывает индикатор выполнения для CIM, аналогичный получению справки по ресурсам DSC.   -  person beavel    schedule 12.06.2015
comment
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force решил проблему для меня на Windows 10   -  person Pavel Tupitsyn    schedule 11.01.2017
comment
Запуск Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser -Force мне, к сожалению, не помог. :( Версия: 5.1.14393.1066 в Windows 10   -  person Spiralis    schedule 16.05.2017


Ответы (1)


Справка на основе комментариев для функции может отображаться в одном из трех мест:

  • В начале тела функции.

  • В конце тела функции.

  • Перед ключевым словом Функция. Между последней строкой справки по функции и ключевым словом Function не может быть более одной пустой строки.

Ссылка Microsoft на это: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comment_based_help?view=powershell-5.0

Пытаться:

function a-func {
}
function another-func {
<#
    .Synopsis
    Testing Get-Help
#>
}

Вставьте код в powershell ISE, выделите функции и нажмите F8, затем запустите следующее в панели консоли:

PS> Get-Help another-func

** Извините, если есть какие-либо проблемы с форматированием, ответил на это с моего телефона

person Sully2_7    schedule 28.12.2018