Используем PowerShell для получения информации о профиле пользователя – Hey, Scripting Guy! Blog

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

Получаем информацию о профиле

Для того, чтобы получить информацию о профиле, нам необходимо запросить класс WMI Win32_UserProfile. Для этого я воспользуюсь командлетом Get-WmiObject (gwmi – его алиас).

gwmi win32_userprofile

Команда и ее вывод приведены на рисунке.

01

Вывод по умолчанию содержит множество ненужной мне в данный момент информации. Что мне сейчас нужно, так это свойства LastUseTime, LocalPath и SID. Слегка измененный запрос приведен ниже.

gwmi win32_userprofile | select lastusetime, localpath, sid

02

Однако, мне кажется, стоит внести еще некоторые изменения для более удобного представления информации. Кроме того, мне не интересны профили, которые не используются. В Windows PowerShell 3.0 командлет Get-CimInstance конвертирует время в формат DateTime. Это еще немного приближает меня к нужному результату.

get-ciminstance win32_userprofile | ? lastusetime | select lastusetime, localpath, sid

03

Транслируем SID в имя пользователя

Теперь мне нужно перевести SID в имя пользователя. Для этого существует несколько способов, и один из них – это использование класса WMI Win32_UserAccount.

Как это работает? Кроме свойства Name, класс Win32_UserAccount содержит свойство SID. Также он включает в себя свойство Caption, в котором содержится как имя пользователя, так и имя домена. Вот пара примеров.

PS C:\> (gwmi win32_useraccount -Filter «sid = ‘S-1-5-21-1457956834-3844189528-354135

0385-1613′»).name

Tim O’Brian

PS C:\> (gwmi win32_useraccount -Filter «sid = ‘S-1-5-21-1457956834-3844189528-354135

0385-1613′»).Caption

IAMMRED\Tim O’Brian

PS C:\>

Теперь все что мне осталось сделать – это создать пользовательское свойство для моего пользовательского объекта.

Создаем пользовательское свойство с нужной информацией

Мне нужно создать пользовательский объект со свойствами LastUseTime, LocalPath и именем пользователя. Для этого я воспользуюсь командлетом Select-Object. Я выберу свойства LastUseTime и LocalPath. Затем я использую хеш-таблицу, чтобы получить имя пользователя по его SID. Вот это хеш-таблица.

@{LABEL=’user’;EXPRESSION={(gwmi win32_useraccount -filter «SID = ‘$($_.sid)'»).caption}}

В выражении EXPRESSION я запрашиваю класс Win32_UserAccount. В качестве фильтра я указываю Sid = ‘$($_.sid)’. Я использую подвыражение, чтобы использовать для сравнения значение свойства. Поскольку запрос возвращает объект пользовательской учетной записи, а мне нужно только значение свойства Caption, я помещаю все выражение в скобки и выбираю только Caption. Полная команда приведена ниже.

get-ciminstance win32_userprofile |

? lastusetime |

select lastusetime, localpath,

@{LABEL=’user’;EXPRESSION={(gwmi win32_useraccount -filter «SID = ‘$($_.sid)'»).caption}}

04

Автор:

Ed Wilson, Microsoft Scripting Guy

Оригинал:

http://blogs.technet.com/b/heyscriptingguy/archive/2013/03/04/use-powershell-to-find-detailed-windows-profile-information.aspx


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

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


Реклама

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

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

Логотип WordPress.com

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

Google+ photo

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

Фотография Twitter

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

Фотография Facebook

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

Connecting to %s