У меня есть следующая функция, которая скрывает средние символы пароля и оставляет видимыми первый и последний символы
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;'
выход:
Источник данных = datasource.com; ID пользователя = UID1; Пароль = p ************ 3; Время ожидания подключения = 120
У меня есть другие строки подключения, которыеотформатированы в JSON, поэтому приведение к sqlbuilder не будет работать с этим типом ввода
{"Тип аутентификации": "Имя пользователяPassword", "Имя пользователя": "someID1", "Пароль": "Yu# gh456! ts "," EncryptConnection ": true}
Я мог бы сделать что-то вроде этого:
$Json = '{"Authentication Kind":"UsernamePassword","Username":"someID1","Password":"Yu#gh456!ts","EncryptConnection":true}'
$Sql = $Json | ConvertFrom-Json
$Sql.Password
с
$Sql.gettype().name
я получаю
PSCustomObject
Я хотел бы применить это в функции таким образом, чтобы он проверял ввод строки типа pscustomobject, чтобы он не приводил его как sqlbuilder
псевдокод :
function Hide-ConnectionStringPassword {
if ($input.gettype().name -ne 'PSCustomObject')
{
param(
[parameter(Mandatory,ValueFromPipeline)]
[System.Data.SqlClient.SqlConnectionStringBuilder]$ConnectionString
)}
else
{
param(
[parameter(Mandatory,ValueFromPipeline)]
$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
}