Ваша проблема в основном синтаксис проблема :
$svr.Databases[1].model.datasources[0].Update(UpdateOptions.ExpandFull)
Выше приведен вызов метода .NET , который PowerShell анализирует в выражение режим , в результате чего UpdateOptions.ExpandFull
сообщает о синтаксической ошибке.
В режиме выражения:
ссылки на типы , такие как UpdateOptions
, должны быть заключены в [...]
; например, [UpdateOptions]
ссылки на статические элементы этого типа должны ссылаться через оператор ::
; например [UpdateOptions]::ExpandFull
Тем не менее, вы должны:
либо: используйте полное имя типа, [Microsoft.AnalysisServices.UpdateOptions]::ExpandFull
, как в полезном ответе Mötz .
или, в PSv5 +: поместив оператор using namespace Microsoft.AnalysisServices
в начале скрипта, вы можете сделать более краткую [UpdateOptions]::ExpandFull
работу.
PowerShell предлагает более удобную альтернативу , однако: вы можете просто указать символьное имя значения перечисления в виде строки - 'ExpandFull'
- и PowerShell автоматически выполнит преобразование для вас:
$svr.Databases[1].model.datasources[0].Update('ExpandFull')
Вам даже не нужно знать имя типа перечисления, чтобы это работало (хотя, если вы его знаете, его использование в редакторе, поддерживающем язык, например, в Visual Studio Code, может предоставить вам IntelliSense).