我不能完全告訴你」再問一遍,但我會爲你提出的不同解釋給出答案。
「如何在不使用ConvertTo-SecureString的情況下爲PSCredential生成密碼?」
您可以將常規字符串直接傳遞給構造函數,並將其轉換爲內部的SecureString。
$password = [System.Web.Security.Membership]::GeneratePassword(128,0)
$configCredential = New-Object PSCredential ($username, $password)
但是,使用SecureString的值時,最好的做法是從來沒有在第一時間以明文的祕密值 - 的原因,你必須與-AsPlainText
指定-Force
,大概也是爲什麼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)。 –