vaultman.psm1
## Secret vault fun # https://learn.microsoft.com/en-us/powershell/utility-modules/secretmanagement/get-started/using-secretstore?view=ps-modules Function Register-VaultManNonInteractiveVault { [CmdletBinding()] param ( [string]$VaultName ) # You can't set some vaults to be non-interactive and some to be interactive. It's all or nothing. # If you want an interactive vault, simply run, Set-VaultManVault. # Even in this non-interactive mode, you'll need to set an initial password, once the config is complete you won't be # prompted for this again. Write-Warning "This will set ALL VAULTS to non-interactive, no authentication mode. Think about this wisely." Set-SecretStoreConfiguration -Interaction None -Authentication None -Scope CurrentUser Register-VaultManVault -vaultName $VaultName } Function Register-VaultManVault { [CmdletBinding()] param ( [string]$VaultName ) Register-SecretVault -Name $VaultName -ModuleName Microsoft.PowerShell.SecretStore Get-SecretVault -Name $VaultName } Function Set-VaultManSecret { [CmdletBinding()] param ( [string]$SecretName, [string]$VaultName, [securestring]$SecretValue ) Set-Secret -Name $SecretName -Secret $SecretValue -Vault $VaultName } Function Set-VaultManSecretInteractive { [CmdletBinding()] param ( [string]$SecretName, [string]$VaultName ) $SecretValue = Read-Host -Prompt "Enter secret value" -AsSecureString Set-VaultManSecret -SecretName $SecretName -VaultName $VaultName -SecretValue $SecretValue } Function Get-VaultManSecret { [CmdletBinding()] param ( [string]$SecretName, [string]$VaultName, [switch]$AsPlainText ) $secret = Get-Secret -Name $SecretName -Vault $VaultName if ($AsPlainText) { $secret = $secret | ConvertFrom-SecureString -AsPlainText } $Secret } |