我正在寻找一种手动验证传递给脚本的参数的方法。
我尝试使用$ PSBoundParameters(内置变量)迭代所有参数的列表,但我没有得到任何使用相同的结果。
出于某种原因(我们必须实现脚本)我不能使用PowerShell的内置验证方法。我必须手动验证所有参数。
[CmdletBinding()]
Param
(
[Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$true)]
[string]$AzureUserName,
[Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$true)]
[string]$AzurePassword,
[Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$true)]
[string]$AzureSubscriptionID,
[Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$true)]
[string]$Location,
[Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$true)]
[String]$ResourceGroupName,
[Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$true)]
[String]$DeploymentName,
[Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$true)]
[String]$TemplateJSONPath,
[Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$true)]
[String]$ParameterJSONPath,
[Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$true)]
[String]$VNetName,
[Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$true,HelpMessage="Example: 10.0.0.0/16")]
[String]$vnetAddressPrefix,
[Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$true,HelpMessage="Example: 10.0.0.0/16")]
[String]$subnet1Prefix,
[Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$true,HelpMessage="Example: 10.0.0.0/16")]
[String]$subnet2Prefix,
[Parameter(Mandatory=$False,ValueFromPipelineByPropertyName=$true,HelpMessage="Example: 10.0.0.0/16")]
[String]$GatewayPrefix
)
Begin
{
}
Process
{
$paramList = $PSBoundParameters.Values
$i=1
Write-Host "Found $($paramList.Count) parameters"
ForEach($Parameter In $paramList)
{
Write-Host "Param $i value: $Parameter"
$i++
}
}
我得到的结果是:
Found 0 parameters