Neg*_*tar 14 azure azure-powershell
我今天将 Az Powershell 升级到 4.6.1 并开始看到以下警告。我的问题是我应该如何处理这个警告?我可以将警告静音,但这根本无法帮助我为这一重大变化做好准备。我检查了 Az 4.6.1 Microsoft 文档,他们告诉我我应该仍然使用 SecretValueText 并且没有提供关于弃用或任何其他获取秘密值的替代方法的类似警告。那么我使用 SecretValueText 读取 KeyVault 机密的 powershell 的更新路径是什么?
WARNING: Breaking changes in the cmdlet 'Get-AzKeyVaultSecret' :
WARNING: - "The output type 'Microsoft.Azure.Commands.KeyVault.Models.PSKeyVaultSecret' is changing"
- The following properties in the output type are being deprecated :
'SecretValueText'
WARNING: Note :The change is expected to take effect from the version : '3.0.0'
WARNING: - "The output type 'Microsoft.Azure.Commands.KeyVault.Models.PSDeletedKeyVaultSecret' is changing"
- The following properties in the output type are being deprecated :
'SecretValueText'
WARNING: Note :The change is expected to take effect from the version : '3.0.0'
WARNING: NOTE : Go to https://aka.ms/azps-changewarnings for steps to suppress this breaking change warning, and other information on breaking changes in Azure PowerShell.
Run Code Online (Sandbox Code Playgroud)
这是Microsoft 文档中的当前示例:
$secret = Get-AzKeyVaultSecret -VaultName 'Contoso' -Name 'ITSecret'
Write-Host "Secret Value is:" $secret.SecretValueText
Secret Value is: P@ssw0rd
Run Code Online (Sandbox Code Playgroud)
小智 15
这可以通过以下方式完成:
获取秘密:
$secret = Get-AzKeyVaultSecret -VaultName {YourVaultName} -Name {YourSecret}
$pass = $secret.SecretValue | ConvertFrom-SecureString -AsPlainText
Run Code Online (Sandbox Code Playgroud)
这与 $secret.SecretValueText 相同
小智 10
Microsoft 文档现已更新此示例取自最新文档
$secret = Get-AzKeyVaultSecret -VaultName 'Contoso' -Name 'ITSecret'
$secretValueText = '';
$ssPtr = [System.Runtime.InteropServices.Marshal]::SecureStringToBSTR($secret.SecretValue)
try {
$secretValueText = [System.Runtime.InteropServices.Marshal]::PtrToStringBSTR($ssPtr)
} finally {
[System.Runtime.InteropServices.Marshal]::ZeroFreeBSTR($ssPtr)
}
Write-Host "Secret Value is:" $secretValueText
Secret Value is: P@ssw0rd
Run Code Online (Sandbox Code Playgroud)
好吧,即使SecretValueText将被弃用,也有一种方法将始终有效。
使用就行$secret.SecretValue,它是一个System.Security.SecureString,我们只需要把它转换成String,$Password下面就是你想要的。
$secret = Get-AzKeyVaultSecret -VaultName joykeyvault -Name mySecret123
$SecurePassword = $secret.SecretValue
$Password = [System.Net.NetworkCredential]::new("", $SecurePassword).Password
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6854 次 |
| 最近记录: |