gpt4 book ai didi

validation - 将 ValidateSet 与从 CSV 文件加载的内容一起使用

转载 作者:行者123 更新时间:2023-12-03 23:32:03 26 4
gpt4 key购买 nike

我真的很喜欢这样的方式ValidateSet作品。当您在 PowerShell ISE 中键入 Cmdlet 时,它会以列表形式建议选项。

我想知道是否可以从 CSV 文件( Import-CSV )中检索值并在 Param 中使用它们阻止以便在构建 Cmdlet 参数时它们在 PowerShell ISE 的下拉框中可用?有点像 $Type现在可以工作,但随后使用导入文件中的值。

Function New-Name {
Param (
[parameter(Position=0, Mandatory=$true)]
[ValidateSet('Mailbox','Distribution','Folder','Role')]
[String]$Type,
[parameter(Position=1,Mandatory=$true)]
[String]$Name
)
Process { 'Foo' }
}

最佳答案

您可以从以下方面着手:

function New-Name {
param (
[parameter(Position=0, Mandatory=$true)]
[String]$Name
)

dynamicparam {
$attributes = new-object System.Management.Automation.ParameterAttribute
$attributes.ParameterSetName = "__AllParameterSets"
$attributes.Mandatory = $true
$attributeCollection = new-object -Type System.Collections.ObjectModel.Collection[System.Attribute]
$attributeCollection.Add($attributes)
$values = @('MailBox', 'Tralala', 'Trilili') # your Import-Csv here
$ValidateSet = new-object System.Management.Automation.ValidateSetAttribute($values)
$attributeCollection.Add($ValidateSet)

$dynParam1 = new-object -Type System.Management.Automation.RuntimeDefinedParameter("Type", [string], $attributeCollection)
$paramDictionary = new-object -Type System.Management.Automation.RuntimeDefinedParameterDictionary
$paramDictionary.Add("Type", $dynParam1)
return $paramDictionary
}

process { 'Foo' }
}

信用到期的信用,这主要来自以下 article来自脚本专家。
代码并不漂亮,但它可以满足您的需求。

completion

关于validation - 将 ValidateSet 与从 CSV 文件加载的内容一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25177744/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com