У меня есть простая функция, которая имеет два параметра. Я не упоминал их как позиционные, но все же, когда я проверяю помощь для этой функции, она автоматически назначает им позицию. Как я могу заставить их иметь только указанный параметр (не принимать значение по положению)?Именованный параметр в PowerShell, показывающий как Positional
Function Test-Params
{
Param
(
[Parameter(Mandatory,ValueFromPipeline,ValueFromPipelineByPropertyName)]
$Param1,
[Parameter(ValueFromPipeline,ValueFromPipelineByPropertyName)]
$Param2
)
Write-Host "$Param1 $Param2"
}
Когда я проверяю помощь для выполнения этой функции или попытаться запустить функцию, обеспечивая параметры значения позиционного это работает (но это не должно работать):
Test-Params test1 test2
test1 test2
Помощь выход:
help Test-Params -Full
NAME
Test-Params
SYNTAX
Test-Params [-Param1] <Object> [[-Param2] <Object>] [<CommonParameters>]
PARAMETERS
-Param1 <Object>
Required? true
Position? 0
Accept pipeline input? true (ByValue, ByPropertyName)
Parameter set name (All)
Aliases None
Dynamic? false
-Param2 <Object>
Required? false
Position? 1
Accept pipeline input? true (ByValue, ByPropertyName)
Parameter set name (All)
Aliases None
Dynamic? false
Отлично !! Спасибо за вклад. Оно работает. – SavindraSingh
Полезно знать; с 'PositionalBinding = $ false' на месте, используйте атрибуты' Position = ', специфичные для параметра (например,' [Parameter (Обязательный, Position = 0)] ', чтобы явно сделать параметры выбора позиционными. –
mklement0