我正在开发一个从模板部署和配置VM的PowerCLI脚本。在配置阶段,我必须运行一些命令,这些命令需要Guest的root用户名和密码才能在VM上运行Scripts。这些是模板的默认凭据,它们在我的脚本中以明文形式存储。配置完成后,我让用户使用SecureString凭据更改其密码。
让我担心的是,由于我正在配置虚拟机的性质,如果有人能够找到我脚本中的默认纯文本凭据,则有一个很大的机会可以访问此虚拟机。有没有办法将默认凭据存储在加密的脚本中?
答案 0 :(得分:2)
可以使用可信存储和ConvertTo-SecureString
存储针对用户帐户加密的凭据。
以下是如何针对您的帐户加密值,其中您要加密的值存储在$Password
中。确保在$configDir
。
$Password = "SomeValue"
#Path to store the credential
$configDir = "$Env:AppData\WindowsPowerShell\Modules\YourScriptName\0.1\Config.ps1xml"
$password = ConvertTo-SecureString "SomeValue" -AsPlainText -Force
$password | ConvertFrom-SecureString | Export-Clixml $configDir -Force
现在,要从加密中恢复密码:
$password = Import-Clixml -Path $configDir -ErrorAction STOP | ConvertTo-SecureString
$Ptr = [System.Runtime.InteropServices.Marshal]::SecureStringToCoTaskMemUnicode($password)
$password= [System.Runtime.InteropServices.Marshal]::PtrToStringUni($Ptr)
您最终将密码存储在$password
。