如何在PowerShell中使用Get-Credential创建Azure密钥保管库机密
解决方法
核心说明
Get-Credential返回的PSCredential对象中的密码为SecureString类型,本身可以直接对接Azure Key Vault的机密写入接口,无需强行转明文,仅在需要存储完整凭据对(用户名+密码)的场景下才需要做明文转换。
操作步骤
- 步骤1:获取用户输入的凭据
执行命令获取凭据对象:$vmCred = Get-Credential -Message "请输入虚拟机管理员账户的用户名和密码" - 步骤2:存储密码到Azure Key Vault(最安全方案,无需转明文)
Set-AzKeyVaultSecretcmdlet的-SecretValue参数原生支持SecureString类型输入,直接传入密码属性即可:Set-AzKeyVaultSecret -VaultName <你的Key Vault名称> -Name <自定义机密名称> -SecretValue $vmCred.Password - 步骤3:(可选)存储完整凭据对到单个机密
如果需要把用户名和密码存在同一个机密中,再做明文转换:# 安全转换密码为明文 $plainPwd = [System.Net.NetworkCredential]::new("", $vmCred.Password).Password # 拼接为凭据字符串,格式可自定义 $credString = "username:$($vmCred.UserName);password:$plainPwd" # 转为安全字符串后存入Key Vault $secretValue = ConvertTo-SecureString $credString -AsPlainText -Force Set-AzKeyVaultSecret -VaultName <你的Key Vault名称> -Name <自定义凭据机密名称> -SecretValue $secretValue # 清理内存中的明文变量 Remove-Variable plainPwd, credString
注意事项
- 非必要场景不要将安全字符串转为明文,避免密码在内存中泄露的风险
- 执行写入操作的Azure账号需要拥有对应Key Vault的机密写入权限,可通过Key Vault的访问策略或Azure RBAC配置
内容的提问来源于stack exchange,提问作者Noa Hochman
相关产品推荐
相关产品推荐

