Как с помощью командной строки или PowerShell получить SID пользователя | Белые окошки

1] использование wmic

Найти SID или идентификатор безопасности пользователя очень просто. Для этого мы должны использовать командную строку инструментария управления Windows (WMIC).

Итак, прежде всего, начните с открытия командной строки. Вы можете сделать это, выполнив поиск Командная строка в окне поиска Cortana. Или, если вы используете Windows 8 или новее, нажмите комбинацию кнопок WINKEY X , чтобы открыть контекстное меню кнопки «Пуск», и нажмите Командная строка (администратор).

Теперь введите следующую команду:

3] используйте powershell


Другой способ найти SID для всех пользователей – использовать команду Get-WmiObject в PowerShell.

Откройте PowerShell и введите следующую команду:

4] использование редактора реестра

Здесь начнем с открытия редактора реестра. Вы можете сделать это, выполнив поиск в окне поиска Cortana, или просто нажмите комбинацию WINKEY R , чтобы запустить запуск, введите regedit и нажмите Enter.


Открыв редактор реестра, перейдите по следующему пути:

HKEY_LOCAL_MACHINE ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ Microsoft Windows NT CurrentVersion ProfileList

Теперь внутри значений ProfileImagePath для каждого идентификатора безопасности в папке ProfileList вы можете найти нужные идентификаторы безопасности и другие сведения, например имена пользователей. Страница будет выглядеть аналогично приведенному ниже фрагменту экрана.

Стоит отметить, что вы можете найти SID для пользователей, которые уже вошли в систему на компьютере. Либо они должны иметь удаленный доступ к своей учетной записи, либо их учетная запись должна быть авторизована, а затем переключена на другого пользователя, под учетной записью которого выполняется эта деятельность. Это единственный недостаток этого метода, но метод 1 использования WMIC, это не проблема вообще.

How do i get the sid number from whoami /all in powershell?

To parse all users and groups from the output of whoami /all the code below should work.
It returns an array of [PsCustomObjects] with properties Name, SID and Type (either ‘User’ or ‘Group’).
This alows you to save it as CSV file if you want.

$type  = ''
$result = (whoami /all) | ForEach-Object {
    switch -Regex ($_) {
        '^Users?Name'  { $type  = 'User' ; break }
        '^Groups?Name' { $type  = 'Group'; break }      
        '^s*$'         { $type  = '' ; break}
        '^= '           { $width = $_ -split ' ' ; break }
        default {
            if ($type -eq 'User') {
                $sidStart = $width[0].Length   1
                [PsCustomObject]@{
                    'Name' = $_.Substring(0, $width[0].Length).Trim()
                    'SID'  = $_.Substring($sidStart, $width[1].Length).Trim()
                    'Type' = $type
                }  
            }
            elseif ($type -eq 'Group') { 
                $sidStart = $width[0].Length   $width[1].Length   2
                [PsCustomObject]@{
                    'Name' = $_.Substring(0, $width[0].Length).Trim()
                    'SID'  = $_.Substring($sidStart, $width[2].Length).Trim()
                    'Type' = $type
                }  
            }
        }
    }
}

# output on screen
$result | Format-Table -AutoSize

# output to CSV file
$result | Export-Csv -Path 'UsersAndSids.csv' -NoTypeInformation

Update

:/>  Как узнать SID пользователя или по известному SID определить его имя

The whoami also has a switch /FO CSV with which the output is in CSV format with empty lines between the user and groups data. Unfortunately, this output too is localized.
Using calculated properties however, it is possible to return the property names in English.

The code for that approach, for convenience in a function:

function Parse-WhoAmI {
    $nl = [Environment]::NewLine
    # join the array with newlines and split into two blocks on the empty line
    # the first block contains User info; the second block is for the groups
    $data = ((whoami /ALL /FO CSV) -join $nl) -split "$nl$nl" | Select-Object -First 2

    # output the user data with English column names
    $userdata  = $data[0] | ConvertFrom-Csv
    $headers   = $userdata[0].PSObject.Properties.Name  # get the localized header names
    $userdata | Select-Object @{Name = 'Name'; Expression = { $_.$($headers[0]) }}, 
                              @{Name = 'SID'; Expression  = { $_.$($headers[1]) }},
                              @{Name = 'Type'; Expression = { 'User' }}


    # do the same for the Groups block
    $groupdata = $data[1] | ConvertFrom-Csv
    $headers = $groupdata[0].PSObject.Properties.Name
    $groupdata | Select-Object @{Name = 'Name'; Expression = { $_.$($headers[0]) }}, 
                               @{Name = 'SID'; Expression  = { $_.$($headers[2]) }}, 
                               @{Name = 'Type'; Expression = { 'Group' }}
}

# call the function
$result = Parse-WhoAmI

# output on screen
$result | Format-Table -AutoSize

# output to CSV file
$result | Export-Csv -Path 'UsersAndSids.csv' -NoTypeInformation

Идентификация sid


SID в формате S-1-0-0 называется пустым SID. Он присваивается идентификатору безопасности, когда его значение неизвестно, или он присваивается группе без каких-либо участников.

Кроме того, SID в формате S -1-1-0 является идентификатором мира. Он назначается группе каждого пользователя.

Наконец, SID в формате S-1-2-0 называется локальным SID. Он назначается пользователю, который должен войти в систему с локального терминала.

Как с помощью командной строки или powershell получить sid пользователя | белые окошки

При создании учётной записи пользователя, группы или присвоению имени компьютеру каждому из этих объектов Windows присваивает уникальный идентификационный идентификатор безопасности, именуемый Security Identifier или просто SID. И так как именно SID позволяет точно идентифицировать пользователя, для доступа к различным внутренним и внешним ресурсам Windows использует его.

:/>  Как посмотреть пароль от Wi-Fi на Windows 10: 2 пошаговые инструкции

Исключение составляют SIDы встроенных учётных записей, уже имеющихся в Windows — скрытого администратора и гостя. Независимо от версии системы, эти идентификаторы одинаковы во всех экземплярах Windows. Сие сделано специально, дабы администратор имел возможность централизовано управлять доступом при отсутствии доменной структуры.

При выполнении различных тонких настроек, применении твиков подобных тому действий у вас может возникнуть необходимость узнать SID пользователя по его имени. Сделать это можно разными путями, и здесь мы рассмотрим самые распространённые. Если нужно посмотреть SID текущего пользователя, самым лучшим решением будет использование консольной утилиты whoami.

Откройте командную строку и выполните в ней такую команду:

whoami /user

Whoami

Если же вам нужно получить SID другого юзера, используем такую конструкцию с другой консольной утилитой wmic:

wmic useraccount where name='Злой кролик' get sid

Wmic

Аналогичным образом можно узнать имя пользователя, зная его SID, указав его в качестве значения параметра name. По такому же принципу строятся другие запросы, например, в запрос можно вставить имя локального компьютера. Так можно получить SID администратора локального компьютера, используя оператор (равно =) и указав в качестве значения переменную %computername%, на место которой подставится имя компьютера.

wmic useraccount where (name='Администратор' and domain='%computername%') get sid

С задачей извлечения SID пользователя прекрасно справляется PowerShell, только его синтаксис может показаться не очень удобным.

Вот, этой командой мы получаем SID пользователя «Злой кролик»:

Get-WmiObject -Class win32_userAccount -Filter "name='Злой кролик'"

Get-WmiObject

А можно и так, добавив в список фильтров имя компьютера (та же переменная %computername%):

(Get-WmiObject -Class win32_userAccount -Filter "name='Злой кролик' and domain='%computername%'").SID

PowerShell

Будьте внимательны, следите за кавычками. Не используйте наклонные или фигурные кавычки, все они должны быть прямыми.

:/>  Как свернуть игру в окно на Windows 10: комбинации клавиш и встроенные функции

Есть также и сторонние утилиты, позволяющие получить SID по имени и наоборот, например, PsGetSid, но раз с задачей справляются штатные инструменты самой Windows, приводить пример их использования в данном случае нам показалось излишним.

Найти sid всех пользователей с помощью командной строки или powershell


Откройте окно командной строки/PowerShell и введите следующую команду:

Найти sid конкретного пользователя с помощью commandprompt или powershell

Откройте командную строку/PowerShell и введите следующую команду:

Найти sid текущего пользователя с помощью командной строки или powershell

Откройте окно PowerShell/CMD и введите следующую команду:

 Whoami/пользователь 


Нажмите Ввод.

Найти имя пользователя sid с помощью командной строки или powershell

Откройте командную строку/PowerShell и введите следующую команду

Перечень параметров whoami:

Пользователи Windows XP могут загрузить средства поддержки здесь.

Фильтрация sid для желаемого пользователя

Читатели, которые раньше использовали SQL-запросы, могут относиться к этому. Но эта команда помогает пользователю получить SID конкретного пользователя и игнорировать все хлопоты. Это наиболее полезно, когда большая система (например, сервер) входит в систему и используется одновременно несколькими пользователями, эта команда сэкономит много вашего времени. Но будет работать только если вы знаете имя пользователя пользователя.

Теперь команда, которую вы собираетесь использовать,

Оставьте комментарий

Adblock
detector