Почему `help format-list` не совпадает с`format-list | help`?

help format-list выводит справку для format-list.

format-list | help выводит справку для справки (get-help).

2 ответа

Решение

Помощь - это функция, которая по существу перенаправляет на:

Get-Help command | more

Если вы посмотрите на определение этой функции, вы увидите, что она принимает позиционный аргумент с тегом ValueFromPipelineByPropertyName с аргументом Name,

PS ~\> Get-Content function:help

<#
.FORWARDHELPTARGETNAME Get-Help
.FORWARDHELPCATEGORY Cmdlet
#>
[CmdletBinding(DefaultParameterSetName='AllUsersView')]
param(
    [Parameter(Position=0, ValueFromPipelineByPropertyName=$true)]
    [System.String]
    ${Name},

    # Other arguments deleted for brevity

    [Switch]
    ${Online})
$outputEncoding=[System.Console]::OutputEncoding

      Get-Help @PSBoundParameters | more

Это в основном означает, что если он видит аргумент со свойством Name, это связывает это как входной параметр. Итак, когда вы делаете:

format-list | help

команда format-list выполняется (и ничего не возвращается), поэтому функция справки считает, что она не получила аргументов.

Когда вы делаете:

"format-list" | help

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

PS ~\> get-command format-list

CommandType     Name                Definition
-----------     ----                ----------
Cmdlet          Format-List         Format-List [[-Property] <Object[]>] [-GroupBy <...

вы можете видеть, что команда format-list имеет свойство Name, так что если вы попытались

get-command format-list | help

Вы получаете помощь для format-list,

| или оператор "pipe" перенаправляет вывод одной операции в другую. Так что в этом случае вы вызываете format-list, а затем перенаправляете вывод этого в качестве параметра, чтобы помочь. справка не знает, что делать с этим параметром, поэтому она входит в заданный по умолчанию behvaior (справка для справки).

Другие вопросы по тегам