Я не могу точно сказать, о чем вы спрашиваете, но я дам ответы на различные интерпретации, которые у меня есть на ваш вопрос.
«Как я могу сгенерировать пароль для PSCredential без ConvertTo-SecureString?»
Вы можете передать обычную строку непосредственно конструктору, и он внутренне преобразует ее в SecureString.
$password = [System.Web.Security.Membership]::GeneratePassword(128,0)
$configCredential = New-Object PSCredential ($username, $password)
Однако наилучшая практика при использовании значений SecureString заключается в том, чтобы никогда не использовать секретное значение в открытом тексте. Причина, по которой вы должны указать -Force
с -AsPlainText
, и, возможно, также причина существования правила PSScriptAnalyzer, состоит в том, чтобы препятствовать этой практике. . Если вы полагаетесь на безопасность SecureString для смягчения угроз, вы должны следовать этому мягкому принуждению, избегая открытой переменной $password
:
$configCredential = New-Object PSCredential ($username, [System.Web.Security.Membership]::GeneratePassword(128,0))
«Как я могу преобразовать строку в безопасную строку, не отключая и не подавляя ошибки PSScriptAnalyzer?»
Если вас не интересует сам объект учетных данных, но вы хотите получить SecureString без использования ConvertTo-SecureString
, вы все равно можете (ab) использовать для этой цели класс PSCredential. Более легкий для чтения пример:
$password = [System.Web.Security.Membership]::GeneratePassword(128,0)
$configCredential = New-Object PSCredential ($username, $password)
$securePassword = $configCredential.Password
Однострочник, который следует лучшим практикам:
$securePassword = New-Object PSCredential ($username, [System.Web.Security.Membership]::GeneratePassword(128,0)) | Select-Object -ExpandProperty Password
Вы также можете разделить строку на символы и добавить их в SecureString один за другим:
$securePassword = New-Object SecureString
foreach ($char in [System.Web.Security.Membership]::GeneratePassword(128,0).ToCharArray()) {
$securePassword.AppendChar($char)
}
person
Micah R Ledbetter
schedule
22.08.2017