Powershell 如何将变量传递给满足ValidateSet的函数?

Powershell 如何将变量传递给满足ValidateSet的函数?,powershell,dbatools,Powershell,Dbatools,我正在调用dbatools安装dbacinstance函数,其中一个参数是Feature。我将变量初始化为Engine。如果$BOLSIS-eq$为true,我想将IntegrationServices添加到变量中。如果$bolSSAS-eq$为true,我想将AnalysisServices添加到变量中 下面的代码不完整,但我相信足以解释我要做的事情: $bolSSIS = $true $bolSSAS = $false $InstallFeatures = "Engine"

我正在调用dbatools安装dbacinstance函数,其中一个参数是Feature。我将变量初始化为Engine。如果$BOLSIS-eq$为true,我想将IntegrationServices添加到变量中。如果$bolSSAS-eq$为true,我想将AnalysisServices添加到变量中

下面的代码不完整,但我相信足以解释我要做的事情:

$bolSSIS = $true
$bolSSAS = $false
$InstallFeatures = "Engine"
if ($bolInstallFeatureSSIS -eq $true) { $InstallFeatures += ",IntegrationServices" }
if ($bolInstallFeatureSSAS -eq $true) { $InstallFeatures += ",AnalysisServices" }

Install-DbaInstance -Feature $InstallFeatures
上面的代码返回错误: 无法验证参数“Feature”上的参数。参数Engine、IntegrationServices不属于ValidateSet属性指定的set-Default、All、Engine、Tools、Replication、FullText、DataQuality、PolyBase、MachineLearning、AnalysisServices、IntegrationServices、{为简洁起见删除的其他项}。请提供集合中的参数,然后重试该命令

我的问题是:如何设置$InstallFeatures

我尝试过字符串、数组、哈希和其他变量类型


FWIW,如果$InstallFeatures设置为only Default,则Install dbaince-Feature$InstallFeatures命令可以工作并且不会返回错误。

如果将$InstallFeatures声明为数组,则添加更多字符串会将其添加为数组元素,而不是串联

e、 g


如果将$InstallFeatures声明为数组,则添加更多字符串将它们添加为数组元素,而不是串联

e、 g

参数特征定义为字符串数组[string[]]$Feature。您正在发送一个字符串,该字符串应为数组

在不更改脚本其余部分的情况下,您可以

Install-DbaInstance -Feature ($InstallFeatures -split ',')
参数特征定义为字符串数组[string[]]$Feature。您正在发送一个字符串,该字符串应为数组

在不更改脚本其余部分的情况下,您可以

Install-DbaInstance -Feature ($InstallFeatures -split ',')