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 } } |