Поскольку использование объекта учетных данных помогает, просто создайте учетные данные без подсказок:
$Pass = ConvertTo-SecureString -String 'plaintextpassword' -Force -AsPlainText
$User = "whatever"
$Cred = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $User, $Pass
Import-PfxCertificate -FilePath $filelocale -CertStoreLocation Cert:\LocalMachine\My -Password $Cred.Password
Обратите внимание на одинарные кавычки, которые я использовал для предотвращения интерпретации ввода в PowerShell. Это особенно важно для любого пароля с символами. Если использование объекта учетных данных не работает при использовании двойных кавычек вокруг «обычного текста», вероятно, проблема заключается в том, что вы просто указываете, а не то, что фактически получаете в конечном результате.
Если вы хотите проверить это самостоятельно, вы можете использовать следующее на основе « Работа с паролями, защищенными строками и учетными данными в Windows PowerShell ». Это определенно стоит прочитать.
$Pass = ConvertTo-SecureString -String "plaintext$_password" -Force -AsPlainText
$User = "whatever"
$Cred = New-Object -TypeName "System.Management.Automation.PSCredential" -ArgumentList $User, $Pass
$BSTR = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($Cred.Password)
$PlainPassword = [System.Runtime.InteropServices.Marshal]::PtrToStringAuto($BSTR)
$PlainPassword
Обратите особое внимание на использование двойных кавычек и дополнительных $_
, которые вызывают проблему. Цветовое форматирование может помочь вам обнаружить проблему раньше, если вы используете недавний PowerShell или другой инструмент, который выделил цветом. Вы, вероятно, поймете, что я имею в виду.