Public/Users/New-MMUser.ps1

# Создание нового пользователя в MatterMost

function New-MMUser {
    <#
    .SYNOPSIS
        Creates a new user in MatterMost.
    .EXAMPLE
        New-MMUser -Username 'jdoe' -Email 'jdoe@example.com' -Password (ConvertTo-SecureString 'Pass123!' -AsPlainText -Force)
    .EXAMPLE
        New-MMUser -Username 'jdoe' -Email 'jdoe@example.com' -Password (ConvertTo-SecureString 'Pass123!' -AsPlainText -Force) -FirstName 'John' -LastName 'Doe'
    .EXAMPLE
        $users | New-MMUser
    #>

    [OutputType('MMUser')]
    [CmdletBinding()]
    param(
        [Parameter(Mandatory, ValueFromPipelineByPropertyName)]
        [string]$Username,

        [Parameter(Mandatory, ValueFromPipelineByPropertyName)]
        [string]$Email,

        [Parameter(Mandatory, ValueFromPipelineByPropertyName)]
        [SecureString]$Password,

        [Parameter(ValueFromPipelineByPropertyName)]
        [string]$FirstName,

        [Parameter(ValueFromPipelineByPropertyName)]
        [string]$LastName,

        [Parameter(ValueFromPipelineByPropertyName)]
        [string]$Nickname,

        [Parameter(ValueFromPipelineByPropertyName)]
        [string]$Locale = 'en'
    )

    process {
        $body = @{
            username = $Username
            email    = $Email
            password = [System.Net.NetworkCredential]::new('', $Password).Password
            locale   = $Locale
        }

        if ($FirstName) { $body['first_name'] = $FirstName }
        if ($LastName)  { $body['last_name']  = $LastName }
        if ($Nickname)  { $body['nickname']   = $Nickname }

        Invoke-MMRequest -Endpoint 'users' -Method POST -Body $body | ConvertTo-MMUser
    }
}