在我的发行版中,我想运行一个需要PSCredential对象的Powershell DSC脚本。是否有任何“干净”的方法将秘密变量转换为PSCredential对象?
目前我使用:
$secpasswd = ConvertTo-SecureString $secretPasswordParam -AsPlainText -Force
$mycreds = New-Object System.Management.Automation.PSCredential ("username", $secpasswd)
并需要将PSDscAllowPlainTextPassword
设置为true
。
更新
运行Invoke-ScriptAnalyzer
时,我得到:
PSAvoidUsingPlainTextForPassword Warning deploy.ps1 4 Parameter '$secretPasswordParam' should use
SecureString, otherwise this will expose sensitive
information. See ConvertTo-SecureString for more
information.
PSAvoidUsingConvertToSecureStringWi Error deploy.ps1 21 File 'deploy.ps1' uses ConvertTo-SecureString with
thPlainText plaintext. This will expose secure information.
Encrypted standard strings should be used instead.
由于此消息和设置名为PSDscAllowPlainTextPassword
的显式选项的感觉不佳,因此我寻找更清晰的解决方案。
答案 0 :(得分:1)
我不认为它不是“干净”,因为脚本分析器只是分析该PS文件,它无法分析具有特定上下文的脚本文件。
关于构建/发布的秘密变量,您不能将其输出为纯文本(例如写入输出),除非您将其发送到网站并获取值。
秘密变量是:
$(password)
。如果您不希望其他人在没有密钥的情况下获取实际值,您可以将加密值(例如,通过工具加密)存储在变量中。
有关秘密变量的更多信息,请参阅:Secret Variables