Я не получил правильную помощь по этому вопросу
, поэтому я публикую здесь другой вариант, который я имею в виду:
У меня есть следующий скрипт, которыйизменяет строки подключения уровня 1100 и 1400 кубов / баз данных
$newConnectionString = "Connection Timeout=120;User Id=UID1;Data Source=datasource.com;Password=password123553;Persist Security Info=True;Session Character Set=UTF8"
$AS = New-Object Microsoft.AnalysisServices.Server
$AS.connect("$Server")
$cubeName = $Analysis_Server.Databases.FindByName($Cube)
$compatibility_lvl = $cubeName.CompatibilityLevel
if ($compatibility_lvl -lt 1200) #1103
{
$cubeName.DataSources[0].ConnectionString = $newConnectionString
$cubeName.DataSources[0].Update()
$lt1200 = $($cubeName.DataSources[0].ConnectionString)
Write-Host "$lt1200`r`n" -Fore yellow
}
else
{
$TAS = new-Object Microsoft.AnalysisServices.Tabular.Server
$TAS.Connect("$Server")
$TAS.Databases[$Cube].model.datasources[0].ConnectionString = $newConnectionString
$TAS.Databases[$Cube].Update([Microsoft.AnalysisServices.UpdateOptions]::ExpandFull)
$gt1200 = $($TAS.Databases[$Cube].model.datasources[0].ConnectionString)
Write-Host "$gt1200`r`n" -Fore yellow
}
из этих операторов:
$lt1200 = $($cubeName.DataSources[0].ConnectionString)
Write-Host "$lt1200`r`n" -Fore yellow
$gt1200 = $($TAS.Databases[$Cube].model.datasources[0].ConnectionString)
Write-Host "$gt1200`r`n" -Fore yellow
это то, что я получаю в качестве вывода
СоединениеТайм-аут = 120; Идентификатор пользователя = UID1; Источник данных = datasource.com; Пароль = пароль123553; Постоянная информация о безопасности = Истина; Набор символов сеанса = UTF8
Я должен получить только это как вывод:
Тайм-аут соединения = 120; Идентификатор пользователя = UID1; Источник данных = datasource.com; Информация о персистентной безопасности = Истина; Набор символов сеанса = UTF8
, так как я не могу найтиспособ обновления источника данных, кроме повторного подключения к серверу и распечатки строки подключения без пароля, я ищу регулярное выражение заменить пароль в следующих сценариях:
- заменить значение пароля всеми звездочками
Время ожидания соединения = 120; Идентификатор пользователя = UID1; Источник данных = datasource.com; Пароль = ********; Информация о сохранении безопасности = Истина; Набор символов сеанса = UTF8
оставьте первый и последний символы значения пароля, но замените середину всеми звездами
Тайм-аут подключения = 120; Идентификатор пользователя = UID1; Источник данных = datasource.com; Пароль= p ******* 3; Persist Security Info = True; набор символов сеанса = UTF8
сохраните первые 3 значения пароля и замените остальные звездочками
Тайм-аут соединения = 120; Идентификатор пользователя = UID1; Источник данных = datasource.com; Пароль = pas ********; Persist Security Info = True; набор символов сеанса = UTF8
Я знаю, что это будет примерно так, но я не уверен, что регулярное выражение будет для вышеуказанных сценариев:
$lt1200 = $($cubeName.DataSources[0].ConnectionString) -Replace($_ "Password=*?;", "Password=********");