【发布时间】:2016-11-14 19:52:36
【问题描述】:
我有一个简单的函数,它有两个参数。我没有提到它们是位置的,但是当我检查该功能的帮助时,它会自动为它们分配一个位置。如何强制它们仅被命名为参数(不接受位置值)?
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
【问题讨论】:
标签: powershell parameter-passing