Гейзенберг был здесь: псевдонимы для параметров PowerShell появляются только в справке по командлетам, когда вы НЕ документируете командлет
Пытаясь сделать документацию для моих командлетов PowerShell (написанной на C#, а не в сценариях) как можно более полной, я сделал интересное открытие. Если я включаю правильный файл справки MAML (например, MyModule.dll-Help.xml), то отображение справки для параметра командлета, имеющего один или несколько псевдонимов, может выглядеть следующим образом:
PS> Get-Help Set-MySetting -param ItemType
-ItemType <ItemTypeChoice>
The type for the item.
Required? false
Position? 4
Default value String
Accept pipeline input? true (ByPropertyName)
Accept wildcard characters? false
Если, с другой стороны, я удаляю этот файл справки и перезагружаю свой модуль, справка для того же параметра - теперь только отражается от самого кода Get-Help
- может выглядеть так:
PS> Get-Help Set-MySetting -param ItemType
-ItemType <ItemTypeChoice>
The type for the item.
Required? false
Position? 4
Accept pipeline input? true (ByPropertyName)
Parameter set name (All)
Aliases Type, SettingType
Dynamic? false
Обратите внимание на наличие Aliases
собственность во второй инстанции и ее отсутствие в первой.
Конечно, сначала думают, что мой MAML должен быть неверным. Эта возможность еще более вероятна, учитывая тот факт, что благодаря обширному веб-поиску мне еще предстоит найти что-то удаленное, например, окончательный источник для XML-схемы MAML (!). Однако, если мой MAML неверен, то MAML также используется для собственных командлетов ядра PowerShell, потому что именно там я скопировал его, считая его надежным источником (C:\Windows\System32\WindowsPowerShell\v1.0\ EN-US\Microsoft.PowerShell.Commands.Management.dll-help.xml).
Но главное свидетельство проблемы заключается в том, что, хотя некоторые из основных командлетов PowerShell в этом файле имеют псевдонимы, они также не сообщают псевдонимы при вызове Get-Help! Вот пример:
PS> Get-Help Add-Computer -param DomainName
-DomainName <String>
Specifies the domain to which the computers are added. This parameter is required when adding the computers to a domain.
Required? true
Position? 1
Default value
Accept pipeline input? false
Accept wildcard characters? false
Вот начало определения MAML для DomainName
параметр Add-Computer
- отметить псевдонимы, определенные в конце:
<command:parameter required="true" variableLength="false"
globbing="false" pipelineInput="false" position="1" aliases="DN,Domain">
Таким образом, Get-Help
знает, как сообщать об псевдонимах, когда он должен выполнить работу самостоятельно, с помощью рефлексии, но он не в состоянии сообщить об псевдонимах, когда это предусмотрено в aliases
атрибут <command:parameter>
,
Вопрос
В чем истинная проблема?
- Get-Help ожидает, что псевдонимы будут где-то кроме
aliases
атрибут<command:parameter>
, - Get-Help не в состоянии искать псевдонимы в MAML вообще, когда предоставляется файл MAML.
Если (1) кто-то может определить правильный способ указания псевдонимов, то для моих собственных командлетов есть простой обходной путь. Если (2)... время, чтобы подать проблему на Connect!
1 ответ
У меня была та же проблема, и я смог обойти ее, добавив Aliases
в параметр <maml:description>
раздел.