SecretManagement.NetwrixPasswordSecure.Extension/functions/Set-Secret.ps1

function Set-Secret {
    <#
    .SYNOPSIS
    Updates a secret stored in the vault.
 
    .DESCRIPTION
    Updates a secret stored in the vault.
 
    .PARAMETER Name
    Name of the entry
 
    .PARAMETER Secret
    The New Secret. Can be a SecureString or a PSCredential-object
 
    .PARAMETER VaultName
    The name of the secret vault.
 
    .PARAMETER AdditionalParameters
    Additional parameters which where configured while creating the vault.
 
    .EXAMPLE
    Set-Secret -Verbose -Vault $Vaultname -Secret (Get-Credential) -Name foo
 
    Updates username and password of the entry.
 
    .NOTES
    General notes
    #>

    [CmdletBinding()]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseShouldProcessforStateChangingFunctions', '')]
    [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseOutputTypeCorrectly', '')]
    param (
        [string] $Name,
        [object] $Secret,
        [string] $VaultName,
        [hashtable] $AdditionalParameters
    )
    $updateParam = $PSBoundParameters | ConvertTo-PSFHashtable -Exclude 'Secret'
    if ($Secret -is [securestring]) {
        $updateParam.NewPassword = $Secret
    }
    elseif ($Secret -is [pscredential]) {
        $updateParam.NewPassword = $Secret.password
        $updateParam.NewUsername = $Secret.Username
    }
    Write-PSFMessage "#Setting secret with `$updateParam=$($updateParam|ConvertTo-Json -Compress)"
    Update-NetwrixContainer @updateParam
    Wait-PSFMessage
    return $true
}