Skip to content

Set-PSSMSecret

SecretManagement: Adds or updates a secret in a vault

#Requires -Version 5.1
#Requires -Modules Microsoft.PowerShell.SecretManagement, Microsoft.PowerShell.SecretStore

[CmdletBinding()]
Param(
    [Parameter(Mandatory = $true)]
    [string]$SecretName,

    [Parameter(Mandatory = $true)]
    [securestring]$SecretValue,

    [securestring]$StorePassword,
    [string]$VaultName,
    [switch]$OverwriteExistingSecret
)

Process {
    try {
        if ($null -ne $StorePassword) { Unlock-SecretStore -Password $StorePassword -ErrorAction Stop }
        $cmdArgs = @{ ErrorAction = 'Stop'; Name = $SecretName; Secret = $SecretValue; Confirm = $false }
        if ($PSBoundParameters.ContainsKey('VaultName')) { $cmdArgs.Add('Vault', $VaultName) }
        if (-not $OverwriteExistingSecret) { $cmdArgs.Add('NoClobber', $true) }
        $null = Set-Secret @cmdArgs -ErrorAction Stop
        $sec = Get-Secret -Name $SecretName -ErrorAction Stop
        [PSCustomObject]@{ Timestamp = Get-Date -Format "yyyy-MM-dd HH:mm:ss"; Status = "Success"; SecretName = $SecretName; Message = "Secret '$SecretName' stored" }
    }
    catch { throw }
}

Name of the secret

Value of the secret (secure string)

Password to unlock the SecretStore if required

Name of the vault to store the secret in

Off

Update the secret if it already exists

An interactive directory of PowerShell scripts.