如何在PowerShell中设置强制参数?
rxztt3cl1#
您可以在每个参数上方的属性中指定它,如下所示:
function Do-Something{ [CmdletBinding()] param( [Parameter(Position=0,mandatory=$true)] [string] $aMandatoryParam, [Parameter(Position=1,mandatory=$true)] [string] $anotherMandatoryParam) process{ ... } }
rhfm7lfc2#
要使参数成为强制参数,请在参数说明中添加“Mandatory=$true”。要使参数成为可选参数,只需将“Mandatory”语句去掉即可。此代码适用于脚本和函数参数:
[CmdletBinding()] param( [Parameter(Mandatory=$true)] [String]$aMandatoryParameter, [String]$nonMandatoryParameter, [Parameter(Mandatory=$true)] [String]$anotherMandatoryParameter )
确保“param”语句是脚本或函数中的第一个语句(注解和空行除外)。您可以使用“Get-Help”cmdlet验证是否正确定义了参数:
PS C:\> get-help Script.ps1 -full [...] PARAMETERS -aMandatoryParameter <String> Required? true Position? 1 Default value Accept pipeline input? false Accept wildcard characters? -NonMandatoryParameter <String> Required? false Position? 2 Default value Accept pipeline input? false Accept wildcard characters? -anotherMandatoryParameter <String> Required? true Position? 3 Default value Accept pipeline input? false Accept wildcard characters?
guicsvcw3#
只是想发布另一个解决方案,因为我发现param(...)块有点丑。看起来像这样的代码:
param(...)
function do-something { param( [parameter(position=0,mandatory=$true)] [string] $first, [parameter(position=1,mandatory=$true)] [string] $second ) ... }
也可以这样写得更简洁:
function do-something ( [parameter(mandatory)] [string] $first, [parameter(mandatory)] [string] $second ) { ... }
看起来好多了!可以省略=$true,因为mandatory是开关参数。
=$true
mandatory
0lvr5msh4#
你不需要指定Mandatory=true,Mandatory就足够了。简单示例:
Mandatory=true
Mandatory
function New-File { param( [Parameter(Mandatory)][string]$FileName ) New-Item -ItemType File ".\$FileName" }
4条答案
按热度按时间rxztt3cl1#
您可以在每个参数上方的属性中指定它,如下所示:
rhfm7lfc2#
要使参数成为强制参数,请在参数说明中添加“Mandatory=$true”。要使参数成为可选参数,只需将“Mandatory”语句去掉即可。
此代码适用于脚本和函数参数:
确保“param”语句是脚本或函数中的第一个语句(注解和空行除外)。
您可以使用“Get-Help”cmdlet验证是否正确定义了参数:
guicsvcw3#
只是想发布另一个解决方案,因为我发现
param(...)
块有点丑。看起来像这样的代码:也可以这样写得更简洁:
看起来好多了!可以省略
=$true
,因为mandatory
是开关参数。0lvr5msh4#
你不需要指定
Mandatory=true
,Mandatory
就足够了。简单示例: