Scripts/Set-EventStoreUserPassword.psm1

function Set-EventStoreUserPassword{

    [Cmdletbinding()]
    Param(
        [String]    $url = "http://localhost:2113",
        [String]    $user = "ops",
        [String]    $newpassword = "changedit",
        [String]    $adminuser = "admin",
        [String]    $adminpassword = "changeit"
    )

    Write-Verbose ":: Setting the NewPassword:$newpassword for User: $user with Admin User: $adminuser and AdminPassword:$adminpassword on URL:$url"

    $url = -join ( $url , '/users/', $user , '/command/reset-password' )
    Write-Verbose ":: Rest URL: $url"

    $secpasswd = ConvertTo-SecureString $adminpassword -AsPlainText -Force
    $credential = New-Object System.Management.Automation.PSCredential($adminuser, $secpasswd)
    $base64AuthInfo = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes(("{0}:{1}" -f $user,$password)))

    $JSON = '{"newPassword":"' + $newpassword + '"}'

    Write-Verbose ":: JSON: $JSON"
    Write-Verbose ":: Invoking RestMethod"
    Invoke-RestMethod $url -Credential $credential -Method Post -Body $JSON -ContentType "application/json" -Headers @{Authorization = "Basic $base64AuthInfo" }

    Write-Verbose ":: Waiting 2 seconds"
    Start-Sleep -s 2
}

Export-ModuleMember 'Set-EventStoreUserPassword'