Независимый от языка способ найти всех пользователей с правами администратора на компьютере через powershell - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть скрипт powershell, который может найти всех пользователей, как доменных, так и локальных, которые имеют доступ администратора к текущему компьютеру.Скрипт работает отлично, пока не сменишь язык компьютера.Я хотел бы знать, есть ли другие способы пойти по этому поводу.Ниже приведен мой текущий скрипт

$strComputer = "."
    $computer = [ADSI]("WinNT://" + $strComputer + ",computer")
    $Group = $computer.psbase.children.find("Administrators")
    $Props = $Group.psbase.invoke("Members")  | %{$_.GetType().InvokeMember("Adspath", 'GetProperty', $null, $_, $null)}

Если вы делаете Write-Host $ Props, вы можете получить выходные данные всех пользователей, отформатированных как {DOMAIN} / {USERNAME}

Заранее спасибо!

1 Ответ

0 голосов
/ 13 декабря 2018

Вы можете использовать известный SID группы, чтобы найти его.В блоге есть некоторое обсуждение здесь , но в нем используются VBScript и WMI (winmgmts:\\).

Если вы хотите использовать WinNT://, как вы уже используете, тогда это будетпоиск в локальных группах для группы с SID S-1-5-32-544, который соответствует группе Administrators.

$strComputer = "."
$computer = [ADSI]("WinNT://" + $strComputer + ",computer")

$Group = $computer.Children |
    Where {
        (New-Object System.Security.Principal.SecurityIdentifier $_.objectSid.Value,0).ToString()
            -eq "S-1-5-32-544"
    } | Select -First 1

Этот бит New-Object связан с тем, что свойство objectSid представлено в виде байтамассив, поэтому вам нужно создать объект SecurityPrincipal, чтобы иметь возможность преобразовать его в строку для сравнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...