Как ускорить запрос к фильтрации Win32_UserAccount по свойству FullName - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь найти конкретного c пользователя на основе свойства FullName пользователя с помощью простой команды WMI в powershell:

Get-WmiObject win32_useraccount -Filter "fullname='Jack Ryan'"

Есть около 50 000 пользователей, и поиск всех пользователей на основе свойства FullName занимает до 30 секунд.

Однако, когда я пытаюсь выполнить поиск на основе Name вместо FullName, я получаю ответ назад менее чем за секунду. Я не понимаю, почему поиск по FullName занимает так много времени.

Как мне это ускорить? (К сожалению, мне нужно отфильтровать на основе FullName и получить все имена пользователей для этих идентификаторов)

1 Ответ

1 голос
/ 11 мая 2020

Получение членов группы через ADSI, согласно комментарию @rboy. Наверное, проще всего иметь здесь свою собственную функцию, если вы не можете использовать Get-LocalGroupMember.

function Get-LocalMembers {
    Param(
        [parameter(Mandatory=$false)][string]$GroupName
    )
    $ADSI = [ADSI]"WinNT://$env:COMPUTERNAME"
    if ($PSBoundParameters.ContainsKey('GroupName')) {
        $Groups = $ADSI.Children.Find($GroupName,'Group')
    }
    else {
        $Groups = $ADSI.Children | Where-Object { $_.SchemaClassName -eq 'Group' }
    }

    Foreach ($Group in $Groups) {
        [PSCustomObject] @{
            Group = $($Group | Select-Object -ExpandProperty Name)
            Members = $(
                $Group.Invoke('members') | ForEach-Object { 
                    $_.GetType().InvokeMember("Name",'GetProperty',$null,$_,$null)
                }
            )
        }
    }
}

Использование:

Get-LocalMembers                            # Get members of all groups
Get-LocalMembers -GroupName Administrators  # Get members of specified group

EDIT

Получение свойства Name и FullName. Я не уверен, что еще можно сделать с помощью ADSI в PowerShell. Я никогда не исследовал это дальше, чем объекты пользователей и списки групп / участников. заполните свойство Fullname.

...