SecretManagement.PleasantPasswordServer.Extension/Public/Remove-Secret.ps1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
function Remove-Secret { param ( [Parameter(Mandatory)] [string] $Name, [Parameter(Mandatory)] [string] $VaultName, [Parameter()] [hashtable] $AdditionalParameters ) trap { Write-VaultError -ErrorRecord $_ } $Token = Invoke-LoginToPleasant -AdditionalParameters $AdditionalParameters $headers = @{ "Accept" = "application/json" "Authorization" = "$Token" } $body_search = @{ "search" = "$Name" } $body_delete = [ordered]@{ "Action" = "Delete" "Comment" = "Deleted through SecretsManagement" } $PasswordServerURL = [string]::Concat($AdditionalParameters.ServerURL, ":", $AdditionalParameters.Port) $Secrets = Invoke-RestMethod -method post -Uri "$PasswordServerURL/api/v5/rest/search" -body (ConvertTo-Json $body_search) -Headers $headers -ContentType 'application/json' $id = $Secrets.Credentials.id if ($id.Count -gt 1) { throw "Multiple ambiguous entries found for $Name, please remove the duplicate entry" } if ($null -eq $id) { throw "No secret with $Name is found" } $splat = @{ Uri = "$PasswordServerURL/api/v5/rest/entries/$id" Method = 'Delete' Body = (ConvertTo-Json $body_delete) Headers = $headers ContentType = 'application/json' UseBasicParsing = $true } $Response = Invoke-WebRequest @splat if ($Response.StatusCode -eq 204) { return $true } else { return $false } } |