es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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.
Tags:  , ,

Answer

  1. Avatar for 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:

    SetSecretValue $DestKv 'ClientId' (GetSecretValue $SrcKv 'ClientId')
    SetSecretValue $DestKv 'ClientSecret' (GetSecretValue $SrcKv 'ClientSecret')
    

    Esto pasará los argumentos a las funciones correctamente y evitará el error de sintaxis.

Comments are closed.