Проблема с использованием Get-Help из скрипта PowerShell - PullRequest
2 голосов
/ 13 марта 2019

Это должно быть что-то чрезвычайно простое, но я просто не могу заставить Get-Help работать из моего скрипта PowerShell.

  • Когда я запускаю Get-Help myscript -Examples в командном окне PowerShell, я получаю отличное справочное сообщение. Тем не менее,
  • Когда я вызываю Get-Help myscript -Examples в моем скрипте PowerShell, он запускается, как если бы -Examples не указывалось - вместо справки примеров показывается обычная справка.

UPDATE:

Поскольку у @lit есть подозрения, причина в том, что я запускаю Get-Help для того же сценария, который в данный момент выполняется.

Я просто хочу показать справочное сообщение для моего скрипта. Вот пример, который вы можете попробовать:

<#
.SYNOPSIS

Calculates the number of possible passwords

.DESCRIPTION

Calculates the number of possible passwords based
on the input so you will know the actual number before
you proceed to create your dictionary file.

.PARAMETER CharacterSet

Specifies the characters (letters, numbers, symbols) that
need to be included. Parameter is mandatory.

.PARAMETER MinCharacters

Specifies the minimum characters of the generated passwords.
Parameter is mandatory.

.PARAMETER MaxCharacters

Specifies the maximum characters of the generated passwords.
Parameter is mandatory.

.PARAMETER IncludeCapital

Specifies whether or not to include upper case letters along with
the lower case letters.

.PARAMETER CapitalOnly

Specifies whether or not all lower case letters to be converted to
upper case letters.

.INPUTS

System.String. Get-PasswordNumber can accept a string value to
determine the CharacterSet parameter.

.OUTPUTS

System.Double. Get-PasswordNumber returns the number of passwords that
can be created.

.EXAMPLE

C:\PS> Get-PasswordNumber -CharacterSet "a,b,c,1,2,3,$,*,&" -MinCharacters 2 -MaxCharacters 5
66420

.EXAMPLE

C:\PS> Get-PasswordNumber -Characters "a,b,c,1,2,3,$,*,&" -MinCharacters 2 -MaxCharacters 5 -IncludeCapital
271440

.EXAMPLE

C:\PS> Get-PasswordNumber -Characters "a,b,c,1,2,3,$,*,&" -MinCharacters 2 -MaxCharacters 5 -CapitalOnly
66420

.EXAMPLE

C:\PS> Get-PasswordNumber -Characters alphabet -MinCharacters 2 -MaxCharacters 5
12356604

.LINK

PowerShell Module DictionaryFile
#>


param(
        [switch]$IncludeCapital,
        [switch]$CapitalOnly)

write-host program started.

if (!$CapitalOnly) {
  Get-Help myscript
  Get-Help myscript -Examples

}

write-host program ended.

1 Ответ

1 голос
/ 14 марта 2019

Краткий ответ : используйте Out-String следующим образом:

Get-Help $MyInvocation.InvocationName -Examples | Out-String

Подробно :

  • найдено, что описанное поведение появляется для любого действительного имени командлета / функции / скрипта вместо myscript в

, когда я вызываю Get-Help myscript -Examples в моем скрипте PowerShell, этоработает так, как будто -Examples не указан

  • обнаружил невинную (но предположительно не связанную) заметку в Get-Help Get-Help -Online:

Поскольку командлет Get-Help генерирует объект MamlCommandHelpInfo, а не строку, необходимо использовать командлет, который преобразует содержимое раздела справки в строку, например Out-String или Out-File.

  • безуспешно выискивается в MamlCommandHelpInfo.cs для различий в использовании Get-Help в сценарии .ps1 против приглашения PS.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...