Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powershell:Cmdlet绑定属性的顺序_Powershell - Fatal编程技术网

Powershell:Cmdlet绑定属性的顺序

Powershell:Cmdlet绑定属性的顺序,powershell,Powershell,一个简单的函数: function Just-Test { [CmdletBinding()] Param( [Parameter(Mandatory=$true)] [ValidateSet('yes','no')] [string]$inputen, [Parameter(Mandatory=$true)] [ValidateScript( { if(!(

一个简单的函数:

function Just-Test
{
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$true)]
        [ValidateSet('yes','no')]
        [string]$inputen,
        [Parameter(Mandatory=$true)]

        [ValidateScript(
        {
            if(!(Test-Connection -ComputerName $_ -count 1 -quiet))
            {
                throw "no conn to server!"
            }
            else
            {
                $true
            }
        })]
        [ValidatePattern('^19')]
        [string]$comp
    )
}
然后我调用函数: 只需测试-输入“是”-组件“172.168.0.1”

第一:没有计算机“172.168.0.1”,第二:模式错误,因此我得到错误: 仅测试:无法验证参数“comp”上的参数。参数“172.168.0.1”与“^19”模式不匹配。请提供一个与“^19”匹配的参数,然后重试该命令

然后我更改代码,并将[ValidationPattern]直接放在…必填..后面:

function Just-Test
{
    [CmdletBinding()]
    Param(
        [Parameter(Mandatory=$true)]
        [ValidateSet('yes','no')]
        [string]$inputen,
        [Parameter(Mandatory=$true)]
        [ValidatePattern('^19')]
        [ValidateScript(
        {
            if(!(Test-Connection -ComputerName $_ -count 1 -quiet))
            {
                throw "no conn to server!"
            }
            else
            {
                $true
            }
        })]

        [string]$comp
    )
}
当然,我会遇到一个错误: 仅测试:无法验证参数“comp”上的参数。没有连接到服务器! 但是公司名称('172…')的错误模式将被完全忽略??
为什么?

我相信它只会使用它看到的最后一个Validate属性,这就是为什么更改它们在中定义的顺序会更改行为。如果您仍在使用ValidateScript代码,那么确实没有理由不能在代码中同时添加这两个检查。

您可能希望查看未来问题的预览,因为这很难阅读。为什么要应用附加验证程序,而有些人已经说,该参数没有价值?