Я не могу точно сказать, что вы» спрашиваю, но я дам ответы на разные интерпретации, которые у меня есть для вашего вопроса.
«Как я могу сгенерировать пароль для 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)
}
[Родственные] (https://github.com/PowerShell/PSScriptAnalyzer/issues/574). –