手动验证PowerShell参数

时间:2016-05-31 11:26:18

标签: powershell

我正在寻找一种手动验证传递给脚本的参数的方法。

我尝试使用$ 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

0 个答案:

没有答案