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



我正在调用dbatoolsInstall-DbaInstance函数,其中一个参数是Feature。我将变量初始化为"0";发动机";。如果$bolSSIS -eq $true;Integration Services";到变量。如果$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

上面的代码返回错误:Cannot validate argument on parameter 'Feature'. The argument "Engine,IntegrationServices" does not belong to the set "Default,All,Engine,Tools,Replication,FullText,DataQuality,PolyBase,MachineLearning,AnalysisServices,IntegrationServices, {others removed for brevity} " specified by the ValidateSet attribute. Supply an argument that is in the set and then try the command again.

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

我尝试过字符串、数组、散列和其他变量类型。

如果$InstallFeatures被设置为仅"0";默认";,CCD_ 8命令工作并且不返回错误。

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

例如

$boolSSIS = $true
$boolSSAS = $false
$InstallFeatures = @("Engine")
if ($boolSSIS) { $InstallFeatures += "IntegrationServices" }
if ($boolSSAS) { $InstallFeatures += "AnalysisServices" }

参数Feature定义为字符串数组([string[]]$Feature(。您正在将单个字符串发送到它应该是数组的位置。

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

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

相关内容

  • 没有找到相关文章

最新更新