Utilizando el valor de retorno de una función como parámetro para otra función.
Estoy tratando de copiar secretos de un Azure Key Vault a otro.
Entonces he escrito 2 funciones de Powershell:
Una para leer secretos:
function GetSecretValue
{
param(
[String] $KeyvaultName,
[String] $SecretName
)
Write-Host "Obteniendo el secreto $SecretName de $KeyvaultName..." -NoNewline
if ((Get-Command Get-AzKeyVaultSecret).ParameterSets.Parameters.Name -contains "AsPlainText")
{
# La nueva versión de Get-AzKeyVaultSecret requiere el parámetro -AsPlainText
$SecretValue = Get-AzKeyVaultSecret -VaultName $KeyvaultName -Name $SecretName -AsPlainText
}
else
{
$SecretValue = (Get-AzKeyVaultSecret -VaultName $KeyvaultName -Name $SecretName).SecretValueText
}
Write-Host "ok"
return $SecretValue
}
Y otra para crear secretos:
function SetSecretValue
{
param(
[String] $KeyvaultName,
[String] $SecretName,
[String] $SecretValue
)
Write-Host "Creando el secreto $SecretName en $KeyvaultName..." -NoNewline
$SecureStr = ConvertTo-SecureString -String $SecretValue -AsPlainText -Force
Set-AzKeyVaultSecret -VaultName $keyvaultName -Name $secretName -SecretValue $SecureStr
Write-Host "ok"
}
Parecen funcionar bien, pero cuando intento combinarlas (siendo un novato en Powershell) –
SetSecretValue($DestKv, 'ClientId', GetSecretValue($SrcKv, 'ClientId'))
SetSecretValue($DestKv, 'ClientSecret', GetSecretValue($SrcKv, 'ClientSecret'))
Entonces obtengo el error de sintaxis:
+ SetSecretValue($DestKv, 'ClientId', GetSecretValue($Src ...
+ ~
Falta cerrar ')' en la expresión.
davy.ai
El error de sintaxis se debe al uso incorrecto de los paréntesis al llamar a las funciones. En Powershell, las llamadas a funciones no deben estar encerradas entre paréntesis.
La forma correcta de llamar a las funciones sería:
Esto pasará los argumentos a las funciones correctamente y evitará el error de sintaxis.