это слишком срабатывает (без обид), вот более "мощная" версия:
Param(
[Parameter(Mandatory)]
[string]$sourceVaultName,
[Parameter(Mandatory)]
[string]$destVaultName
)
Connect-AzAccount
$secretNames = (Get-AzKeyVaultSecret -VaultName $sourceVaultName).Name
$secretNames.foreach{
Set-AzKeyVaultSecret -VaultName $destVaultName -Name $_ `
-SecretValue (Get-AzKeyVaultSecret -VaultName $sourceVaultName -Name $_).SecretValue
}
Просто подведу итог:
Параметры являются обязательными с этим изменением, и вы можете завершить их табуляцией, поэтому вам не нужно помнить, какой из них является первым.
Использование foreach
немного чище, чем использование do\while
(конечно, меньше когнитивных усилий).
Вам не нужно преобразовывать значения в текст и шифровать их обратно, вы можете просто использовать зашифрованное значение, чтобы присвоить его новому секрету