我正在调用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 ',')