Как заменить средние символы * в строке? - PullRequest
1 голос
/ 09 июля 2019

У меня есть следующее

$builder = [System.Data.SqlClient.SqlConnectionStringBuilder]::New('Connection Timeout=120;User Id=UID1;Data Source=datasource.com;Password=password12!553;')

$builder

Это выведет строку подключения как есть.

я хочу распечатать строку подключения с паролем, показывая только 1-й и последний символы, а остальные символы посередине как *

Connection Timeout=120;User Id=UID1;Data Source=datasource.com;Password=p************3; 

как я могу выполнить это динамически (т.е. знаядлина значения пароля и затем замена средних символов на *)?

pseudocode: $builder.Password -replace($_ middle_chars, "*") 

1 Ответ

2 голосов
/ 09 июля 2019
function Hide-ConnectionStringPassword {
    param(
       [parameter(Mandatory,ValueFromPipeline)]
       [System.Data.SqlClient.SqlConnectionStringBuilder]$ConnectionString
    )
    [string]$FistChar = $ConnectionString.Password[0]
    [string]$LastChar = $ConnectionString.Password[($ConnectionString.Password.Length - 1)]
    [string]$Stars = '*' * ($ConnectionString.Password.Length - 2)
    $ConnectionString.Password = $FistChar + $Stars + $LastChar 
    return $ConnectionString.ConnectionString
}
Hide-ConnectionStringPassword 'Connection Timeout=120;User Id=UID1;Data Source=datasource.com;Password=password12!553;'

выходы:

Data Source=datasource.com;User ID=UID1;Password=p************3;Connect Timeout=120
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...