使用 Powershell 一次性在 azure KeyVault 中添加多个秘密的方法

Way to add Multiple secret in azure KeyVault using Powershell in 1 go

$devices = @{ dev1 = "mac"; dev2 = "ipod"; dev3 = "ipad"; dev4 = "samsung"}
$osdev = @{ os1 = "osx"; os2 = "ios"; os3 = "ios"; os4 = "android"}

foreach ($osdevi in $osdev.values){

    $hashed=ConvertTo-SecureString -String $osdevi -AsPlainText -Force
    Set-AzKeyVaultSecret -VaultName 'JonnyKv' -Name $devices.values -Secretvalue $hashed.Values 

}

上面的代码面临问题,因为 devices 是秘密名称,osdev 是秘密值。需要通过 PowerShell 一次性添加值。

您可以通过几种方法来处理它。一种简单而常见的方法是使用 CSV 格式。

$csv = @'
type,os
"mac","osx"
"ipod","ios"
"ipad","ios"
"samsung","android"
'@ | ConvertFrom-Csv

foreach ($device in $devices.GetEnumerator()){

    $hashed = ConvertTo-SecureString -String $device.OS -AsPlainText -Force
    Set-AzKeyVaultSecret -VaultName 'JonnyKv' -Name $device.type -Secretvalue $hashed

}

您也可以只创建初始哈希表数组并使用 for 循环

$devices = "mac","ipod","ipad","samsung"
$osdev = "osx","ios","ios","android"

for($i = 0; $i -lt $devices.count; $i++){

    $hashed = ConvertTo-SecureString -String $osdev[$i] -AsPlainText -Force
    Set-AzKeyVaultSecret -VaultName 'JonnyKv' -Name $devices[$i] -Secretvalue $hashed

}

或者您可以组合哈希表

$devices = @{
    type = "mac"
    os   = "osx"
    },
    @{
    type = "ipod"
    os   = "ios"
    },
    @{
    type = "ipad"
    os   = "ios"
    },
    @{
    type = "samsung"
    os   = "android"
    }

foreach ($device in $devices.GetEnumerator()){

    $hashed = ConvertTo-SecureString -String $device.OS -AsPlainText -Force
    Set-AzKeyVaultSecret -VaultName 'JonnyKv' -Name $device.type -Secretvalue $hashed

}