sergey vasin

The IT blog

Weeked Scripter: Используем PowerShell и ассоциации WMI для определения групп пользователя – Hey, Scripting Guy! Blog

leave a comment »

Резюме: Microsoft Scripting Guy, Ed Wilson рассказывает об использовании Windows PowerShell и ассоциаций WMI для определения групп, членом которых является пользователь.

Используем класс ассоциаций для определения членства в группах

Вчера я рассказывал об использовании ассоциаций WMI для определения членов локальной группы администраторов. Сегодня я займусь обратным – я буду определять группы, членом которых является определенный пользователь.

Что следует знать о классах ассоциаций, это то, что они работают в обе стороны. Таким образом вы всегда можете указать одного участника ассоциации, чтобы найти другого.

Предположим следующую ситуацию. Я проверял членов группы администраторов на определенном компьютере. Для этого я могу воспользоваться кодом из вчерашней статьи. И я обнаружил в группе администраторов пользователя, которого там быть не должно. Я решил узнать, членом каких еще групп является этот пользователь. В Windows PowerShell 2.0 я могу использовать следующий код.

Get-WmiObject win32_groupuser |

Where-Object { $_.partcomponent -match ‘name=»ed»‘} |

Foreach-Object {[wmi]$_.groupcomponent}

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

Когда я запущу этот код, в консоли появится следующее.

16:28 C:\> gwmi win32_groupuser |

>> Where-Object { $_.partcomponent -match ‘name=»ed»‘} |

>> Foreach-Object {[wmi]$_.groupcomponent}

>>

Caption Domain Name SID

——- —— —- —

EDLT\Administrators EDLT Administrators S-1-5-32-544

IAMMRED\Domain Admins IAMMRED Domain Admins S-1-5-21-14579568…

IAMMRED\Domain Users IAMMRED Domain Users S-1-5-21-14579568…

Если же я могу воспользоваться Windows PowerShell 3.0, я могу выполнить этот запрос с помощью CIM-командлетов. Для начала мне нужно получить экземпляр WMI-класса Win32_UserAccount при помощи командлета Get-CimInstance. Я укажу параметр -filter, чтобы получить данный только о конкретном пользователе. Я передам этот экземпляр командлету Get-CimAssociatedInstance и укажу ассоциативный класс Win32_GroupUser.

Get-CimInstance -Filter «name = ‘ed'» -ClassName win32_useraccount |

Get-CimAssociatedInstance -Association win32_groupuser

Команда и ее вывод приведены ниже.

16:31 C:\> Get-CimInstance -Filter «name = ‘ed'» -ClassName win32_useraccount |

>> Get-CimAssociatedInstance -Association win32_groupuser

>>

SID Name Caption Domain

— —- ——- ——

S-1-5-32-544 Administrators EDLT\Administrators EDLT

S-1-5-21-1457956834… Domain Admins IAMMRED\Domain Admins IAMMRED

S-1-5-21-1457956834… Domain Users IAMMRED\Domain Users IAMMRED

На сегодня все.

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2012/12/16/weekend-scripter-use-powershell-and-wmi-associations-to-find-user-group-membership.aspx


Страницы в социальных сетях:

Twitter: https://twitter.com/vsseth
Facebook: https://fb.com/inpowershell
VKontakte: https://vk.com/inpowershell


Реклама

Written by Сергей Васин

Декабрь 29, 2012 в 12:53

Опубликовано в HeyScriptingGuyBlog, PowerShell

Tagged with , ,

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s