Управление локальными пользователями и группами с помощью PowerShell

10 задач администрирования Active Directory, решаемых с помощью PowerShell

Помимо этого автор ведет блог (по PowerShell, конечно), рекомендуем заглянуть — jdhitsolutions.com/blog. А самое актуальное Вы можете получить из его твиттера twitter.com/jeffhicks.
Итак, ниже приводим перевод статьи “Top 10 Active Directory Tasks Solved with PowerShell”.

Управление Active Directory (AD) с помощью Windows PowerShell – это проще, чем Вы думаете, и я хочу доказать Вам это. Вы можете просто взять приведенные ниже скрипты и с их помощью решить ряд задач по управлению AD.

Модуль LocalAccounts

Всего в модуль входит 15 командлетов. Полный список командлетов в модуле LocalAccounts можно вывести так:

Get-Command -Module Microsoft.PowerShell.LocalAccounts

  • Add-LocalGroupMember – добавить пользователя в локальную группу
  • Disable-LocalUser – отключить локальную учетную запись
  • Enable-LocalUser – включить учетную запись (разблокировать)
  • Get-LocalGroup – получить информацию о локальной группе
  • Get-LocalGroupMember – получить список пользователей в локальной группе
  • Get-LocalUser – получить информацию о локальном пользователе
  • New-LocalGroup – создать новую локальную группы
  • New-LocalUser – создать пользователя

Далее рассмотрим несколько типовых задач по управлению локальными пользователями и группами на компьютере с Windows 10 при помощи PowerShell командлетов из состава модуля LocalAccounts.

Get-ADUser: поиск в нескольких подразделениях с помощью SearchBase

Чтобы отображать пользователей только из определённого контейнера домена (организационного подразделения), используйте опцию -SearchBase:

Если вам нужно выбрать пользователей из нескольких подразделений одновременно, используйте следующий скрипт PowerShell:

Отключениеудаление пользователя

Ну и конечно может потребоваться отключить или удалить учетную запись пользователя. За отключение отвечает флаг «Account is disabled», который также хранится в UserFlags. Сначала помещаем в переменную значение, соответствующее отключенной записи:

Затем с помощью операции -band (побитовое И) проверяем, включена ли учетная запись. Результат выводим в логическом (boolean) виде:

($user.UserFlags.Value -band $disabled) -as [bool]

Если команда вернула False, значит учетная запись активна. Задаем новое значение флага:

$flag = $user.UserFlags.Value -bor $disabled

И изменяем текущее значение:

$user.Put(″userflags″, $flag)
$user.SetInfo()

Обновляем кэш и еще раз проверяем, включена ли учетная запись:

$user.RefreshCache()
($user.UserFlags.Value -band $disabled) -as [bool]

Теперь команда возвращает True, что означает успешное выключение. Ну а для обратного включения требуются ровно те-же действия, только вместо операции -bor (включающее ИЛИ) используется операция -bxor (исключающее ИЛИ):

$disabled = 0x0002
$flag = $user.UserFlags.Value -bxor $disabled
$user.Put(″userflags″, $flag)
$user.SetInfo()

выключение учетной записи пользователя

Ну и для окончательного удаления пользователя воспользуемся методом Delete:

[adsi]$computer = ″WinNT://SRV1″
$computer.Delete(″user″,$user.Name.Value)

И проверим результат командой:
$computer.Children | where | ft name, description -auto

удаление учетной записи пользователя

На этом у меня все о PowerShell и локальных пользователях. Если это вам покажется недостаточным, то более подробно свойства и методы локальных пользователей описаны на MSDN.

— Изменение учётной записи

Для изменения учётной записи нам понадобится командлет Set-LocalUser [изменить локальную учётную запись пользователя]:

5.1. — Описание

5.2. — Полное имя

5.3. — Параметры пароля

-PasswordNeverExpires < $True | $False >— Срок действия пароля.

Срок действия пароля неограничен:

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

-UserMayChangePassword — Разрешить/Запретить пользователю менять пароль.

Разрешить пользователю менять свой пароль:

Запретить пользователю менять свой пароль:

5.4. — Срок действия учётной записи

-AccountExpires ДАТА — Ограничить срок действия учётной записи. Значение ДАТА — указание даты, до которой будет активна учётная запись. Дата указывается в формате ДД.ММ.ГГ . Год может указываться четырьмя [2019] или двумя[19] цифрами. Элементы даты разделяются точкой[.] или слэшем [/] без пробелов.

-AccountNeverExpires — Срок действия учётной записи неограничен:

5.5. — Выключить/Включить учётную запись

По умолчанию, только что созданная учётная запись — активная[Включена]. При необходимости её можно выключить/включить.

Выключить[сделать не активной] её можно командой:

Включить[сделать активной]:

Syntax

Syntax of PowerShell User List are given below:

Hadoop, Data Science, Statistics & others

Get-LocalUser syntax:

Get-ADUser syntax:

From the Get-ADUser syntax, you can use any set of combinations and similarly for the Get-LocalUser account. You can’t use the -Filter and -Identity property together in Get-ADUser cmdlet and -Name and -SID property in Get-LocalUser cmdlet.

We can also use the WMI or CIMInstance class Win32_UserAccount to retrieve the local user details from the local or the remote computers. In addition “Net User” command in cmd is also helpful to retrieve the local user list.

Как найти пользователя в AD и вывести его свойства с помощью Get-ADUser?

Для использования модуля RSAT-AD-PowerShell нужно запустить консоль PowerShell с правами администратора и импортировать модуль командой:

В Windows Server 2012 и выше модуль RSAT-AD-PowerShell устанавливается по-умолчанию при развертывании на сервере роли Active Directory Domain Services (AD DS). Для установки модуля на рядовом сервере домена нужно выполнить команду:

Install-WindowsFeature -Name «RSAT-AD-PowerShell» –IncludeAllSubFeature

В десктопных версия Windows (например, в Windows 10) для работы коммандера Get-AdUser нужно установить соответствующую версию RSAT и включить в Панели Управления компонент Active Directory Module for Windows PowerShell (Remote Server Administration Tools -> Role Administration Tools -> AD DS and AD LDS Tools -> AD DS Tools).

Вы можете установить модуль AD из PowerShell:

Add-WindowsCapability –online –Name “Rsat.ActiveDirectory.DS-LDS.Tools

Import-Module «C:PSADPoShMicrosoft.ActiveDirectory.Management.dll»
Import-Module «C:PSADPoShMicrosoft.ActiveDirectory.Management.resources.dll»

Полный список всех аргументов командлета Get-ADUser можно получить так:

Чтобы вывести список всех учетных записей домена, выполните команду:

По-умолчанию командлет Get-ADUser возвращает только 10 основных атрибутов (из более чем 120 свойств учетных записей пользователей): DistinguishedName, SamAccountName, Name, SID, UserPrincipalName, ObjectClass, статус аккаунта (Enabled: True/False согласно атрибуту UserAccountControl), и т.д.

В выводе командлета отсутствует информация о времени последней смены пароля пользователя.

Get-ADUSer –Server DC01.winitpro.loc –Identity tstuser

Чтобы вывести полную информации обо всех доступных атрибутах пользователя tuser, выполните команду:

Get-ADUser -identity tuser -Properties *

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

Попробуем изменить параметры команды Get-ADUser, чтобы вывести только нужные нам атрибуты пользователя. Можно вывести сразу несколько атрибутов пользователя:

  • PasswordExpired
  • PasswordLastSet
  • PasswordNeverExpires
  • lastlogontimestamp

Get-ADUser tuser -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires, lastlogontimestamp

Теперь в информации о пользователе есть данные о статусе аккаунта (Expired:True/False), дате смены пароля и времени последнего входа в домен (lastlogontimestamp). Представим информацию в более удобном табличном виде и уберем все лишние атрибуты с помощью Select-Object –Property или Format-Table:

Get-ADUser -filter * -properties PasswordExpired, PasswordLastSet, PasswordNeverExpires | ft Name, PasswordExpired, PasswordLastSet, PasswordNeverExpires

Отображение состояния службы

Для просмотра состояния всех служб на определенном компьютере можно локально воспользоваться командлетом Get-Service . Для удаленных систем можно использовать класс Win32_Service инструментария WMI. Если использовать Select-Object для фильтрования Status, Name и DisplayName, формат вывода будет идентичен формату вывода командлета Get-Service :

Чтобы полностью отобразить службы с очень длинными именами, может потребоваться использовать командлет Format-Table с параметрами AutoSize и Wrap, позволяющими оптимизировать ширину столбцов и переносить длинные имена на следующие строки вместо их усечения:

Adblock
detector