Список пользователей в powershell: Получение списка локальных пользователей в Powerhsell и создание новых

Содержание

Получение списка локальных пользователей в Powerhsell и создание новых

Для получения списка локальных пользователей в Powershell, созданию новых, а так же для работ с группами есть множество команд. Что бы увидеть все их выполните команду:



Get-Command -Module Microsoft.PowerShell.LocalAccounts



Если нам нужно увидеть параметры, которые команды еще принимают, можно выполнить эту команду (на примере Get-LocalUser):



Get-Command Get-LocalUser -Syntax







Так мы получим список учетных записей:



Get-LocalUser


Мы можем получить такую информацию не обо всех учетных записях, а из конкретных групп. Так я получу локальных администраторов т.к. они находятся в соответствующей группе:



Get-LocalGroupMember -Group Administrators



Если требуется получить какие-то дополнительные параметры (свойства) объекта. Для того что бы узнать все параметры:



Get-LocalUser | Get-Member


А что бы вывести их все сразу:



Get-LocalUser | select *



Так, например, я получу все объекты, которые активны:



Get-LocalUser | where -Property Enabled -eq $true


А так даты последнего входа только у тех объектов, которые включены:



Get-LocalUser | where -Property Enabled -eq $true | Select -Property LastLogon


 




Так мы создадим нового пользователя с именем «IT_Support» с паролем «Parol12!»:



$password = ConvertTo-SecureString -String "Parol12!" -AsPlainText -Force
New-LocalUser -Name "IT_Support" -Password $password -PasswordNeverExpires


Если мы не укажем ключ PasswordNeverExpires — пароль будет действовать месяц.



Затем добавим нового пользователя в группу администраторов:



Add-LocalGroupMember -Group Administrators -Member "IT_Support"


Ключ Member способен принимать несколько значений, т.е. мы можем добавить множество аккаунтов. Для этого нужно написать их через запятую.


При создании нового объекта есть еще несколько ключей:


  • AccountExpires — время активности учетной записи. Если не указан этот ключ, то такого срока нет. Если мы хотим указать этот срок нам нужна переменная datetime. Примеры с датой и временем в Powershell мы уже разбирали.
  • AccountNeverExpires — если не указан ключ выше, то у нас работает этот ключ.
  • Description — описание учетной записи по желанию.
  • Disabled — по умолчанию аккаунт включен, мы можем указать обратное.
  • FullName — имя и фамилия например.
  • NoPassword — учетная запись создается без пароля.
  • UserMayNotChangePassword — запрещает смену пароля.

 




Для примера так мы можем удалить объект, который создавали раннее из группы:



Remove-LocalGroupMember -Group Administrators -Member IT_Support


Если мы хотим отключить объект:



Disable-LocalUser -Name IT_Support


И удалить:



Remove-LocalUser -Name IT_Support


 




Изменение существующих объектов делается с помощью команд с глаголом Set. На примере администратора сменим пароль:



$password = ConvertTo-SecureString -String "Parol12!" -AsPlainText -Force
Set-LocalUser -Name "Администратор" -Password $password


Мы можем изменить все те же параметры, что и в случае создания учетной записи (перечислены выше). Например так мы можем отключить срок действия пароля:



Set-LocalUser -Name "IT_Support" -PasswordNeverExpires


Отсутствуют только те ключи, которые выведены в отдельный командлет. Например так мы можем включить объект:



Enable-LocalUser -Name "IT_Support2"


 

Рекомендую

Подписывайтесь на наш Telegram канал

Теги:

#powershell

Get-ADUser получение списка пользователей в AD Powershell

Get-ADUser команда, которая возвращает список пользователей AD в Powershell. На самом деле командлет мало чем отличается от тех, которые мы рассматривали раннее с приставкой «Get-AD».


Для работы с командой нам понадобится Powershell Active Directory Module.


Так мы вернем всех пользователей AD:



Get-ADUser -Filter *


Если нам нужно найти по имени, сделайте так:



Get-ADUser -Filter {Name -like "*Adminis*"}


Где вместо Adminis имя вашей учетной записи. Звездочки позволяют искать вхождение где справа и слева могут быть еще символы.


Для получения сведений об одной учетной записи AD есть ключ Identity:



Get-ADUser -Identity Administrator -Properties *


Кроме этого у нас есть дополнительный ключ Properties, который выводит дополнительные свойства у объекта пользователя:



Get-ADUser -Properties * -Filter {Name -like "*0001*"}



Если мы хотим выполнить Get-ADUser в OU, то для этого есть дополнительный ключ, который может искать в организационных единицах и контейнерах. В моем случае я ищу в OU Moscow и домене domain.local:



Get-ADUser -SearchBase "OU=Moscow,DC=domain,DC=local" -Filter * -Properties *


Если вам нужно искать в контейнере — используйте CN. Примеры с множеством OU смотрите ниже.






Мы можем фильтровать по одному или множеству свойств. Для того что бы увидеть все свойства нужно сделать:



В области 1 выделены все имена, по которым мы можем фильтровать. В области 2 тип данных с которыми мы можем сравнивать.  Т.е. если тип данных у области 2 string (строка), то это плохая идея сравнивать с числом (int). Нужно сразу отметить, что те свойства, которые мы получаем благодаря ключу Properties мы не можем применять в Filter. 


Примеры с Get-Member мы уже рассматривали раньше.


Для примера так мы можем получить всех пользователей, у которых указан город Moscow:



Get-ADUSer -Properties * -Filter City | Where-Object -Property City -eq "Moscow"


А теперь найдем всех пользователей, которые неверно вводили пароль более одного раза и в они включены:



Get-ADUser -Properties * -Filter {Enabled -eq $true} | Where-Object -Property BadLogonCount -gt 1


Т.к. BadLogonCount — это свойство от ключа Properties оно должно проверятся через конвейер в Where. 


Еще один пример, но теперь нужно найти пользователя имя которого содержит 0001 и он активен:



 




В команде нет встроенных средств поиска в нескольких объектах сразу. Мы можем объявить переменную, содержащую этот список и затем передать через цикл. На моем пример используется контейнер Users и OU Moscow:



$ou = "OU=Moscow,DC=domain,DC=local","CN=Users,DC=domain,DC=local"
$ou | foreach {Get-ADUser -SearchBase $_ -Filter * }


Если бы у меня была OU Ekaterinburg в которой находилось OU Marketing написать стоило бы так:



"OU=Marketing,OU=Ekaterinburg,DC=domain,DC=local"


 




Экспорт и выгрузка может быть во множество форматов, но для выгрузки в Excel есть специальный формат CSV. Для того что бы сделать выгрузку достаточно выполнить следующее:



Get-ADUser -Filter * | Export-Csv -Path C:\data.csv -NoTypeInformation


Если мы хотим выгрузить только определенные свойства, то в поле SELECT -Property нужно их перечислить:



Get-ADUser -Property -Filter * | SELECT -Property whenChanged,StreetAddress | Export-Csv -Path C:\data.csv -NoTypeInformation


Более подробно об экспорте csv через Powershell.


 




Нужное свойство мы можем получить через соответствующий ключ Properties. Так я получу почту у конкретного пользователя Administrator:


Выгрузим в CSV  имена только тех пользователей у которых нет почты:



$result = Get-ADUser -Filter * -Properties EmailAddress | where -Property EmailAddress -EQ $null
$result | SELECT -Property Name | Export-Csv -Path C:\data.csv -NoTypeInformation


 




Для того что бы увидеть все свойства относящиеся к паролям выполните:



И затем, по этому свойству, отфильтруем пользователей:



Get-ADUser -Filter * -Properties PasswordExpired | where -Property PasswordExpired -eq $true


 

. ..

Рекомендую

Подписывайтесь на наш Telegram канал

Теги:

#powershell

#ad

Список пользователей PowerShell | Как составить список пользователей в PowerShell? (Примеры)

Список пользователей PowerShell — это способ получить пользователей с локальных компьютеров Windows или пользователей активного каталога с помощью специальных командлетов, таких как Get-LocalUser для локальных пользователей в ОС Windows и Get-ADUsers для активного каталога. пользователей для получения сведений о пользователе, таких как различающееся имя (DN), GUID, идентификатор безопасности (SID), диспетчер учетных записей безопасности (SAM) или имя, и могут быть экспортированы в CSV или текстовый файл.

Синтаксис

Синтаксис списка пользователей PowerShell приведен ниже:

Синтаксис Get-LocalUser:

Get-LocalUser
[[-Name] ]
[<Общие параметры>]
Get-LocalUser
[[-SID] ]
[]

Синтаксис Get-ADUser:

Get-ADUser
[-AuthType ]
[-Учетные данные ]
-Фильтр 
[-Свойства ]
[-ResultPageSize ]
[-ResultSetSize ]
[-SearchBase ]
[-SearchScope]
[-Сервер ]
[<Общие параметры>]

Get-ADUser
[-AuthType ]
[-Учетные данные ]
[-Identity] 
[-Partition ]
[-Свойства ]
[-Сервер ]
[]

Get-ADUser
[-AuthType ]
[-Учетные данные ]
-LDAPFilter 
[-Properties ]
[-ResultPageSize ]
[-ResultSetSize ]
[-SearchBase ]
[-SearchScope]
[-Сервер ]
[<Общие параметры>]

Из синтаксиса Get-ADUser можно использовать любой набор комбинаций и аналогично для учетной записи Get-LocalUser. Нельзя одновременно использовать свойства -Filter и -Identity в командлете Get-ADUser и свойства -Name и -SID в командлете Get-LocalUser.

Мы также можем использовать класс WMI или CIIMInstance Win32_UserAccount для получения сведений о локальном пользователе с локального или удаленного компьютера. Кроме того, команда «Net User» в cmd также полезна для получения списка локальных пользователей.

Как составить список пользователей в PowerShell?

Существуют различные способы перечисления пользователей в PowerShell с помощью собственных команд, таких как Get-LocalUser, которая извлекает данные локальной учетной записи пользователя с локального компьютера или удаленных компьютеров, или Get-ADUser, которая извлекает пользователей из Active Directory. домен.

Команда Get-LocalUser появилась в PowerShell 5.1 и является частью модуля Microsoft.PowerShell.LocalAccounts. В более ранней версии PowerShell для получения списка пользователей вам нужно либо загрузить модуль локальных учетных записей, либо использовать команду cmd, например Net User (которая все еще работает), или класс метода WMI Win32_UserAccount.

Если вы выполняете удаленное взаимодействие с компьютерами более старой версии PowerShell, команда Get-LocalUser не будет работать там. Когда вы запускаете локальные пользовательские команды на контроллере домена, он предоставит вам пользователей активного каталога, потому что у DC нет локальных пользователей.

Примеры списка пользователей PowerShell

Ниже приведены примеры:

Пример №1. Получение списка учетных записей локальных пользователей с помощью Cmd

Мы можем использовать команду cmd « Net User », чтобы получить список пользователей cmd или PowerShell.

net user

Вывод:

  • Чтобы получить список локальных пользователей с удаленного компьютера, используйте Invoke-Command в PowerShell,

Invoke-Command -ComputerName LabMachine2k16 -ScriptBlock { net user}

Вывод:

Приведенный выше вывод получен с удаленного компьютера LabMachine2k16.

Пример 2. Получение данных о локальных пользователях с помощью метода WMI

Мы можем использовать метод WMI или класс метода экземпляра CIM Win32_UserAccount для получения списка пользователей.

gwmi win32_UserAccount | Выберите Имя, Полное имя, Заголовок, Домен, SID | ft -AutoSize

Вывод:

Invoke-Command -ComputerName LabMachine2k16 {gwmi win32_UserAccount} | Выберите Имя, Полное имя, Заголовок, Домен, SID | футов -Авторазмер

Вы также можете использовать команду Get-CimInstance вместо метода gwmi .

Вы можете экспортировать выходной файл в текст или CSV, как показано ниже. В приведенном ниже примере выходные данные будут экспортированы в файл UserAccounts.Csv .

gwmi win32_UserAccount | Выберите Имя, Полное имя, Заголовок, Домен, SID | Export-Csv C:\Temp\Useracccounts.csv -NoTypeInformation

Для экспорта в текстовый файл.

gwmi win32_UserAccount | Выберите Имя, Полное имя, Заголовок, Домен, SID | Out-File C:\temp\UserAccounts.txt

Если вы хотите проверить конкретного пользователя или список пользователей домена,

gwmi win32_UserAccount | где{$_.Domain-подобный "LabMachine2k16*"} | Выберите Имя, Полное имя, Заголовок, Домен, SID  | ft -AutoSize

Вывод:

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

gwmi win32_useraccount | где{$_.LocalAccount -eq $true}  | Выберите Имя, LocalAccount, PasswordChangeable, PasswordRequired

Пример 3: Получение списка пользователей AD

Чтобы получить список пользователей домена, вы можете использовать команду Get-ADUser. Чтобы выполнить эту команду, вам необходимо убедиться, что на вашем компьютере установлены средства удаленного администрирования сервера (RSAT).

Get-ADUser -Filter *

Приведенная выше команда получит всех пользователей из домена Active Directory.

  • Чтобы показать все свойства пользователей, вы можете использовать -Property

Get-ADUser -Filter * -Properties *

  • Чтобы отфильтровать определенные свойства,

Get-ADUser -Фильтр * -Свойства * | Выберите Имя, DisplayName, SamAccountName, UserPrincipalName

Вывод:

  • Чтобы получить список пользователей, у которых есть учетные записи Отключено и экспортируйте его в файл CSV, используя приведенную ниже команду.

Get-ADUser -Фильтр * | где {$_.Enabled -eq $false} | Export-Csv C:\DisabledUserAccounts.csv -NoTypeInformation

  • Чтобы получить сведения об учетных записях конкретных пользователей,

Get-ADUser -Identity beta -Properties *

Необходимо использовать свойство SamAccountName в параметре -Identity.

  • Чтобы получить пользователей из определенной организационной единицы (OU), используйте приведенную ниже команду.

Get-ADUser -Фильтр * -Свойства * | где{$_.DistinguishedName -like "*CN=Users*"} | Select Name, DisplayName, userPrincipalName, SAMAccountName

  • Получение списка пользователей в домене Active Directory, срок действия пароля которых истек или установлен на неограниченный срок действия, со свойствами пароля в выходных данных.
  • Извлекает учетные записи пользователей с просроченным паролем.

Get-ADUser -Фильтр * -Свойства * | где{$_.PasswordExpired -eq $true} | Выберите Имя, SAMAccountName, PasswordExpired, PasswordLastSet

  • Получает пароль с неограниченным сроком действия учетных записей пользователей.

Get-ADUser -Фильтр * -Свойства * | где{$_.PasswordNeverExpires -eq $true} | Select Name, SAMAccountName, PasswordNeverExpires

Заключение

Как поясняется в этой статье, PowerShell использует различные команды для получения списка пользователей с компьютера Windows или из домена Active Directory, что полезно администраторам для их аудита и задачи по уборке. Вы можете использовать планировщик задач, чтобы ежемесячно отправлять администраторам электронные письма со списком созданных, просроченных и истекающих учетных записей.

Рекомендуемые статьи

Это руководство по списку пользователей PowerShell. Здесь мы также обсудим определение и синтаксис списка пользователей PowerShell, а также различные примеры и реализацию кода. Вы также можете ознакомиться со следующими статьями, чтобы узнать больше:

  1. Переменная среды PowerShell
  2. PowerShell Запись в консоль
  3. ZIP-файл PowerShell
  4. Многострочная строка PowerShell

Get-ADUser (ActiveDirectory) | Майкрософт учиться

  • Ссылка
Модуль:
ActiveDirectory

Получает одного или нескольких пользователей Active Directory.

Синтаксис

 Get-ADUser
   [-AuthType ]
   [-Учетные данные ]
   -Фильтр <Строка>
   [-Свойства ]
   [-ResultPageSize ]
   [-ResultSetSize ]
   [-SearchBase ]
   [-SearchScope ]
   [-Сервер <Строка>]
   [<Общие параметры>] 
 Get-ADUser
   [-AuthType ]
   [-Учетные данные ]
   [-Идентификация] 
   [-Раздел <Строка>]
   [-Свойства ]
   [-Сервер <Строка>]
   [] 
 Get-ADUser
   [-AuthType ]
   [-Учетные данные ]
   -LDAPFilter <Строка>
   [-Свойства ]
   [-ResultPageSize ]
   [-ResultSetSize ]
   [-SearchBase ]
   [-SearchScope ]
   [-Сервер <Строка>]
   [<Общие параметры>] 

Описание

Командлет Get-ADUser получает указанный пользовательский объект или выполняет поиск для получения нескольких пользовательских объектов.

Параметр Identity указывает пользователя Active Directory, которого необходимо получить.
Вы можете идентифицировать пользователя по его различающемуся имени (DN), GUID, идентификатору безопасности (SID) или имени учетной записи диспетчера учетных записей безопасности (SAM).
Вы также можете установить в качестве параметра переменную объекта пользователя, например $ , или передать объект пользователя через конвейер в Параметр Identity .

Для поиска и извлечения нескольких пользователей используйте параметры Filter или LDAPFilter .
Параметр Filter использует язык выражений PowerShell для записи строк запроса для Active Directory.
Синтаксис языка выражений PowerShell обеспечивает расширенную поддержку преобразования типов для типов значений, полученных параметром Filter .
Для получения дополнительных сведений о синтаксисе параметра Filter введите Get-Help about_ActiveDirectory_Filter .
Если у вас есть существующие строки запроса протокола облегченного доступа к каталогам (LDAP), вы можете использовать параметр LDAPFilter .

Этот командлет извлекает набор свойств объекта пользователя по умолчанию.
Для получения дополнительных свойств используйте параметр Properties .
Дополнительные сведения о том, как определить свойства пользовательских объектов, см. в описании параметра Properties .

Примеры

Пример 1. Получение всех пользователей в контейнере

 PS C:\> Get-ADUser -Filter * -SearchBase "OU=Finance,OU=UserAccounts,DC=FABRIKAM,DC=COM" 

Эта команда получает всех пользователей в контейнере OU=Finance,OU=UserAccounts, DC=FABRIKAM,DC=COM.

Пример 2: Получить отфильтрованный список пользователей

 PS C:\> Get-ADUser -Filter 'Name -like "*SvcAccount"' | Имя таблицы формата, SamAccountName -A
Имя SamAccountName
---- --------------
SQL01 SvcAccount SQL01
SQL02 SvcAccount SQL02
IIS01 SvcAccount IIS01 

Эта команда получает всех пользователей, имя которых заканчивается на SvcAccount.

Пример 3: Получить все свойства для указанного пользователя

 PS C:\> Get-ADUser -Identity ChewDavid -Properties *
Фамилия : Давид
Имя: Чу Дэвид
UserPrincipalName :
Имя: Дэвид
Включено: Ложь
SamAccountName : ЧуДэвид
Класс объекта: пользователь
SID: S-1-5-21-28808-4136710315-2444824263-3544
ObjectGUID: e1418d64-096c-4cb0-b903-ebb66562d99d
DistinguishedName : CN=Chew David,OU=NorthAmerica,OU=Sales,OU=UserAccounts,DC=FABRIKAM,DC=COM 

Эта команда получает все свойства пользователя с именем учетной записи SAM ChewDavid.

Пример 4: Получить указанного пользователя

 PS C:\> Get-ADUser -Filter "Name -eq 'ChewDavid'" -SearchBase "DC=AppNC" -Properties "mail" -Server lds.Fabrikam.com:50000 

Эта команда получает пользователя с именем ChewDavid в экземпляре служб Active Directory облегченного доступа к каталогам (AD LDS).

Пример 5: Получить все включенные учетные записи пользователей

 C:\PS> Get-ADUser -LDAPFilter '(!userAccountControl:1. 2.840.113556.1.4.803:=2)' 

Эта команда переводит все включенные учетные записи пользователей в Active Каталог с использованием фильтра LDAP.

Параметры

-AuthType

-Credential

-Filter

Указывает строку запроса, которая извлекает объекты Active Directory.
Эта строка использует синтаксис языка выражений PowerShell.
Синтаксис языка выражений PowerShell обеспечивает расширенную поддержку преобразования типов для типов значений, полученных Параметр фильтра .
Синтаксис использует представление по порядку, что означает, что оператор помещается между операндом и значением.
Для получения дополнительных сведений о параметре Filter введите Get-Help about_ActiveDirectory_Filter .

Синтаксис:

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

<фильтр> ::= «{» <Список компонентов фильтра> «}»

<Список компонентов фильтра> ::= <Компонент фильтра> | |

::= | «(» «)»

::= «-eq» | «-ле» | «-гэ» | «-нэ» | «-lt» | «-gt»| «-приблизительно» | «-бор» | «-группа» | «-рекурсивное совпадение» | «-как» | «-не нравится»

::= «-и» | «-or»

::= «-not»

::= |

::= <сравните это значение с с помощью указанного >

Чтобы получить список поддерживаемых типов для , введите Get-Help about_ActiveDirectory_ObjectModel .

Примечание. Для типа параметра String PowerShell преобразует запрос фильтра в строку при обработке команды. При использовании строковой переменной в качестве значения в компоненте фильтра убедитесь, что она соответствует правилам цитирования PowerShell. Например, если выражение фильтра заключено в двойные кавычки, переменная должна быть заключена в одинарные кавычки:
Get-ADUser -Filter «Имя — как «$UserName»» . Напротив, если фильтр заключен в фигурные скобки, переменная вообще не должна заключаться в кавычки: Get-ADUser -Filter {Name -like $UserName} .

Примечание. Подстановочные знаки PowerShell, отличные от *, например ?, не поддерживаются синтаксисом Filter .

Примечание. Для запроса с использованием строк запроса LDAP используйте параметр LDAPFilter .

Тип: Строка
Позиция: Именованный
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-Identity

-LDAPFilter

-Partition

-Properties

-ResultPageSize

-ResultSetSize

-SearchBase

-SearchScope

-Server

Входы

Нет или Microsoft.