如何在powershell中的param函数中使用变量?

时间:2017-06-01 13:05:51

标签: powershell powershell-v4.0

我不确定这是可能的,但我想尝试一下。

这是我要做的事情的基础:

function somefunction () {
    $ListOfItems = (get-childitem c:\).name
    param (
        [validateset($ListOfItems)][string]$Moo
    )
}

我不知道变量是否可以在validateset中使用。它看起来并非如此。如果可以的话,我该怎么做呢?

2 个答案:

答案 0 :(得分:1)

这是可行的。你在ValidateScript

之后
Function somefunction () {
    param (
        [ValidateScript({$_ -in (Get-Childitem C:\).Name})] 
        [string]$Moo
    )
}

修改
ValidateScript的默认错误不是用户友好的:

PS C:\> somefunction -Moo thing
  

somefunction:无法验证参数'Moo'的参数。 “$ _   -in(Get-Childitem C :)。名称“带有值的参数的验证脚本”的东西“没有返回True的结果。确定为什么   验证脚本失败,然后再次尝试该命令。

This StackOverflow post goes over how to generate custom error messages

答案 1 :(得分:0)

根据评论阅读评论并完成研究后,我相信没有简单的方法可以做我想做的事情。