Public/ConvertTo-SID.ps1

#### Deprecated ####
function ConvertTo-SID {
    <#
    .SYNOPSIS
        Приобразует массив байтов в SID.
    .DESCRIPTION
        Преобразует SID, представленный в виде массива байтов в "привычный" формат.
    .EXAMPLE
        $vDomainSID = ConvertTo-SID -ByteArray $vDomain.Properties.objectsid
        $vDomain.Properties.objectsid - это SID, полученный при создании объекта с помощью "New-Object System.DirectoryServices.DirectoryEntry"
        А $vDomainSID - это уже SID, который можно передавать в другие функции. Например, в фильтр System.DirectoryServices.DirectorySearcher
    .INPUTS
        Массив байтов, представляющий SID (в формате хранения в AD)
    .OUTPUTS
        SID в "привычном" видем, который можно использовать в других фунциях.
    .NOTES
        Функция "ConvertTo-SID" взята из статьи https://sergeyvasin.net/2017/09/05/convertto-sthsid/
    #>

    Param(
        [Parameter(Mandatory = $true, ValueFromPipeline = $true)]
        $ByteArray
    )

    begin {
        Write-Warning -Message 'The function <ConvertTo-SID> is deprecated. Use the module <ArielAD> instead.'
        $Stream = @()
    }

    process {
        foreach ($Byte in $ByteArray) {
            $Stream += $Byte
        }
    }

    end {
        # Revision and IdentifierAuthority
        $Result = "S-{0}-{1}" -f $Stream[0], $Stream[7]

        # SubAuthority
        for ($i = 0; $i -lt $Stream[1]; $i++) {
            $off = $i * 4
            $Result = "$Result-{0}" -f $([uint32]$Stream[8 + $off] -bor ([uint32]$Stream[9 + $off] -shl 8) -bor ([uint32]$Stream[10 + $off] -shl 16) -bor ([uint32]$Stream[11 + $off] -shl 24))
        }
        return $Result
    }
}