当前位置: 首页 > 知识库问答 >
问题:

无法在Validateset中使用预定义数组-Powershell

关正雅
2023-03-14
$vf = @('Veg', 'Fruit')
function Test-ArgumentCompleter {
[CmdletBinding()]
 param (
        [Parameter(Mandatory=$true)]
        [ValidateSet($vf)]
        $Arg
)

}

预期的结果应该是:当编写'test-argumentcompleterf'时,点击tub按钮后,F autocompleted到ful。提前感谢您的帮助!

共有1个答案

柯河
2023-03-14

为了补充@mklement0和@mathias的答案,使用动态参数:

$vf = 'Veg', 'Fruit'

function Test-ArgumentCompleter {
    [CmdletBinding()]
    param ()
    DynamicParam {
        $RuntimeParameterDictionary = New-Object System.Management.Automation.RuntimeDefinedParameterDictionary
        $AttributeCollection = New-Object System.Collections.ObjectModel.Collection[System.Attribute]
        $ParameterAttribute = New-Object System.Management.Automation.ParameterAttribute
        $ParameterAttribute.Mandatory = $true
        $AttributeCollection.Add($ParameterAttribute)
        $ValidateSetAttribute = New-Object System.Management.Automation.ValidateSetAttribute($vf)
        $AttributeCollection.Add($ValidateSetAttribute)
        $RuntimeParameter = New-Object System.Management.Automation.RuntimeDefinedParameter('Arg', [string], $AttributeCollection)
        $RuntimeParameterDictionary.Add('Arg', $RuntimeParameter)
        return $RuntimeParameterDictionary
    }
}

根据预定义参数值的方式,还可以使用动态验证集值:

Class vfValues : System.Management.Automation.IValidateSetValuesGenerator {
    [String[]] GetValidValues() { return 'Veg', 'Fruit' }
}

function Test-ArgumentCompleter {
[CmdletBinding()]
param (
        [Parameter(Mandatory=$true)]
        [ValidateSet([vfValues])]$Arg
    )
}

注意:IValidateSetValuesGenerator[read:interface]是在PowerShell 6.0中引入的

 类似资料:
  • 我使用react-bootstrap-datetimerangepicker库和bind()从日历中获取选定的日期,但是这个库的“on apply”函数传递了两个参数(event、picker),在“预定义”中,我没有得到假定出现在第二个参数中的startDate和endDate。没有束缚它就不起作用 https://github.com/luqin/react-bootstrap-datetim

  • 问题内容: 我正在尝试预取训练数据以隐藏I / O延迟。我想编写自定义Python代码,该代码从磁盘加载数据并对数据进行预处理(例如,通过添加上下文窗口)。换句话说,一个线程进行数据预处理,另一个线程进行训练。TensorFlow有可能吗? 更新:我有一个基于@mrry的示例的工作示例。 问题答案: 这是一个常见的用例,大多数实现都使用TensorFlow的 队列 将预处理代码与训练代码分离。有一

  • 本文向大家介绍java中数组的定义及使用方法(推荐),包括了java中数组的定义及使用方法(推荐)的使用技巧和注意事项,需要的朋友参考一下 数组:是一组相关变量的集合 数组是一组相关数据的集合,一个数组实际上就是一连串的变量,数组按照使用可以分为一维数组、二维数组、多维数组 数据的有点 不使用数组定义100个整形变量:int i1;int i2;int i3 使用数组定义 int i[100];

  • 测试1: 测试2: 测试3: 基类: 公共类测试库{ } 我需要方法在'test1()'和'test2()'之前单独执行。变量的值仅在这些方法中使用。 预期产出: 测试:组前 Test1值:1 Test3值:0 测试:组前 Test2值:1 但是使用上面的代码,test2中var的值也是0。如何修复属于group1和group2组的方法初始化变量的代码?

  • TypeError:单个数组数组(<__Main__.Azhu_EmailClassifier_2对象位于0x000001D6E7A680D0>,DType=object)不能视为有效集合。 当我试图在自定义的AZHU_EmailClassifier_2类中运行train_test_split函数时,我遇到了这个错误。 我的班级: ~\Anaconda3\lib\site-packages\skl

  • 我正在从事java Web项目,必须在表中插入用户记录。 需要在user表中的ID列值中添加前缀,这意味着我们必须将像“user”这样的前缀添加到序列生成的值中,以获得id列的最终值为“user00001”,这是每个新记录的主键插入表中。 我创建了一个序列和DB触发器,用于在DB中插入任何记录以满足上述要求时填充ID列。我正在使用Oracle 11g DB。 在我的Web应用程序中,我必须使用Hi