Посвященную использования PowerShell для администрирования AD. В качестве исходного пункта автор решил взять 10 типичных задач администрирования AD и рассмотреть то, как их можно упростить, используя PowerShell:

  1. Сбросить пароль пользователя
  2. Активировать и деактивировать учетные записи
  3. Разблокировать учетную запись пользователя
  4. Удалить учетную запись
  5. Найти пустые группы
  6. Добавить пользователей в группу
  7. Вывести список членов группы
  8. Найти устаревшие учетные записи компьютеров
  9. Деактивировать учетную запись компьютера
  10. Найти компьютеры по типу

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

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

Требования

Чтобы использовать PowerShell для управления AD, нужно соблюсти несколько требований. Я собираюсь продемонстрировать, как командлеты для AD работают на примере компьютера на Windows 7.
Чтобы использовать командлеты, контроллер домена у Вас должен быть уровня Windows Server 2008 R2, или же Вы можете скачать и установить Active Directory Management Gateway Service на наследуемых контроллерах домена (legacy DCs). Внимательно прочитайте документацию перед установкой; требуется перезагрузка КД.
На стороне клиента, скачайте и установите (RSAT) либо для Windows 7 , либо для Windows 8 . В Windows 7, Вам необходимо будет открыть в Панели управления (Control Panel) раздел Программы (Programs) и выбрать Включить или выключить функции Windows (Turn Windows Features On or Off) . Найдите Remote Server Administration Tools и раскройте раздел Role Administration Tools . Выберите подходящие пункты для AD DS and AD LDS Tools, особенно обратите внимание на то, что должен быть выбран пункт Active Directory Module for Windows PowerShell , как показано на рисунке 1. (В Windows 8 все инструменты выбраны по умолчанию). Теперь мы готовы работать.

Рис.1 Включение AD DS и AD LDS Tools

Я вошел в систему под учетной записью с правами доменного администратора. Большинство командлетов, которые я буду показывать, позволят Вам уточнить альтернативные полномочия (credentials). В любом случае я рекомендую прочитать справку (Get-Help ) и примеры, которые я буду демонстрировать ниже.
Начните сессию PowerShell и импортируйте модуль:

PS C:\> Import-Module ActiveDirectory

В результате импорта создается новый PSDrive, но мы не будем использовать его. Однако, Вы можете посмотреть, какие команды имеются в импортированном модуле.

PS C:\> get-command -module ActiveDirectory

Прелесть этих команд в том, что если я могу использовать команду для одного объекта AD, то ее можно использовать для 10, 100 и даже 1000. Посмотрим, как некоторые из этих командлетов работают.

Задача 1: Сброс пароля пользователя

Давайте начнем с типичной задачи: сброс пароля пользователя. Сделать это легко и просто можно через командлет Set-ADAccountPassword . Сложная часть заключается в том, что новый пароль должен быть уточнен как защищенная строка: фрагмент текста, который зашифрован и хранится в памяти на протяжении PowerShell сессии. Во-первых, создадим переменную с новым паролем:
PS C:\> $new=Read-Host "Enter the new password" -AsSecureString

Затем, введем новый пароль:

Теперь мы можем извлечь учетную запись (использование samAccountname – лучший вариант) и задать новый пароль. Вот пример для пользователя Jack Frost:

PS C:\> Set-ADAccountPassword jfrost -NewPassword $new

К сожалению, в случае с этим командлетом наблюдается баг: -Passthru , -Whatif , и –Confirm не работают. Если Вы предпочитаете короткий путь, попробуйте следующее:

PS C:\> Set-ADAccountPassword jfrost -NewPassword (ConvertTo-SecureString -AsPlainText -String "P@ssw0rd1z3" -force)

В итоге мне необходимо, чтобы Jack сменил пароль при следующем входе в систему, и я модифицирую учетную запись используя Set-ADUser .

PS C:\> Set-ADUser jfrost -ChangePasswordAtLogon $True

Результаты выполнения командлета не пишутся в консоль. Если это необходимо сделать, используйте –True . Но я могу узнать, успешно или нет прошла операция, произведя извлечения имени пользователя с помощью командлета Get-ADUser и уточнив свойство PasswordExpired , как показано на рисунке 2.


Рис. 2. Результаты работы командлета Get-ADUser Cmdlet со свойством PasswordExpired

Итог: сбросить пароль пользователя с помощью PowerShell совсем не сложно. Признаюсь, что сбросить пароль также просто через оснастку Active Directory Users and Computers консоли Microsoft Management Console (MMC). Но использование PowerShell подходит в том случае, если Вам необходимо делегировать задачу, Вы не хотите разворачивать вышеупомянутую оснастку или сбрасываете пароль в ходе большого автоматизированного ИТ-процесса.

Задача 2: Активировать и деактивировать учетные записи

А теперь давайте деактивируем учетную запись. Продолжим работать с Jack Frost. Этот код использует параметр –Whatif , который Вы можете встретить в других комадлетах, которые осуществляют изменения, чтобы проверить мою команду не запуская ее.

PS C:\> Disable-ADAccount jfrost -whatif What if: Performing operation "Set" on Target "CN=Jack Frost, OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

А теперь деактивируем по-настоящему:

PS C:\> Disable-ADAccount jfrost

А когда настанет время активировать учетную запись, какой командлет нам поможет?

PS C:\> Enable-ADAccount jfrost

Эти командлеты могут быть использованы в конвейерном выражении (pipelined expression), позволяя активировать или деактивировать столько учетных записей, сколько душе угодно. Например, этот код деактивирует все учетные записи в отделе продаж (Sales)

PS C:\> get-aduser -filter "department -eq "sales"" | disable-adaccount

Конечно, писать фильтр для Get-ADUser довольно-таки сложно, но именно здесь использование параметра –Whatif вместе с командлетом Disable-ADAccount приходит на помощь.

Задача 3: Разблокировать учетную запись пользователя

Рассмотрим ситуацию, когда Jack заблокировал свою учетную запись, пытаясь ввести новый пароль. Вмест того, чтобы пытаться найти его учетную запись через GUI, процедуру разблокировки можно осуществить с помощью простой команды.

PS C:\> Unlock-ADAccount jfrost

Командлет также поддерживает параметры -Whatif и -Confirm .

Задача 4: Удалить учетную запись

Неважно, сколько пользователей Вы удаляете, - это просто осуществить с помощью командлета Remove-ADUser . Мне не хочется удалять Jack Frost, но если бы я захотел, то использовал бы такой код:

PS C:\> Remove-ADUser jfrost -whatif What if: Performing operation "Remove" on Target "CN=Jack Frost,OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

Или я могу ввести несколько пользователей и удалить их с помощью одной простой команды:

PS C:\> get-aduser -filter "enabled -eq "false"" -property WhenChanged -SearchBase "OU=Employees, DC=Globomantics,DC=Local" | where {$_.WhenChanged -le (Get-Date).AddDays(-180)} | Remove-ADuser -whatif

С помощью этой команды будут найдены и удалены все деактивованные учетные записи подразделения (OU) Employees, которые не менялись в течение 180 и более дней.

Задача 5: Поиск пустых групп

Управление группами – занятие бесконечное и неблагодарное. Существует множество способов найти пустые группы. Некоторые выражения могут работать лучше, чем другие, в зависимости от Вашей организации. Код, приведенный ниже, позволит найти все группы в домене, включая встроенные (built-in).

PS C:\> get-adgroup -filter * | where {-Not ($_ | get-adgroupmember)} | Select Name

Если у Вас есть группы с сотнями членов, тогда использование этой команды может занять много времени; Get-ADGroupMember проверяет каждую группу. Если Вы можете ограничить или настроить, это будет лучше.
Вот еще один подход:

PS C:\> get-adgroup -filter "members -notlike "*" -AND GroupScope -eq "Universal"" -SearchBase "OU=Groups,OU=Employees,DC=Globomantics, DC=local" | Select Name,Group*

Эта команда находит все универсальные группы (Universal groups), которые не имеют членство в OU Groups и выводит некоторые из свойств. Результат приведен на рисунке 3.


Рис. 3. Поиск и фильтрация универсальных групп

Задача 6: Добавление пользователей в группу

Давайте добавим Jack Frost в группу Chicago IT:

PS C:\> add-adgroupmember "chicago IT" -Members jfrost

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

PS C:\> Add-ADGroupMember "Chicago Employees" -member (get-aduser -filter "city -eq "Chicago"")

Я использовал вводное конвейерное выражение (parenthetical pipelined expression), чтобы найти всех пользователей, у которых имеется свойство City в Chicago. Код в скобках выполняется, и полученные объекты передаются в параметр –Member. Каждый пользовательский объект добавляется в группу Chicago Employees. Неважно, имеем ли мы дело с 5 или 5000 пользователей, обновление членства в группах занимает всего несколько секунд. Это выражение может также быть написано с использованием ForEach-Object , что может быть удобнее:

PS C:\> Get-ADUser -filter "city -eq "Chicago"" | foreach {Add-ADGroupMember "Chicago Employees" -Member $_}

Задача 7: Выводим список членов группы

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

PS C:\> Get-ADGroupMember "Domain Admins"

На рисунке 4 приведен результат.


Рис. 4. Члены группы Domain Admins

Командлет выводит объект AD для каждого члена группы. А что делать с вложенными группами? Моя группа Chicago All Users является коллекцией вложенных групп. Чтобы получить список всех учетных записей, я всего лишь должен использовать параметр –Recursive .

PS C:\> Get-ADGroupMember "Chicago All Users" -Recursive | Select DistinguishedName

Если Вы хотите пойти другим путем – найти, в каких группах пользователь состоит, - используйте свойство пользователя MemberOf :

PS C:\> get-aduser jfrost -property Memberof | Select -ExpandProperty memberOf CN=NewTest,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago Test,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago IT,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago Sales Users,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local

Я использовал параметр -ExpandProperty , чтобы вывести имена MemberOf как строки.

Задача 8: Найти устаревшие учетные записи компьютеров

Мне часто задают этот вопрос: “Как найти устаревшие учетные записи компьютеров?”. И я всегда отвечаю: “А что для вас является устаревшим?” Компании по-разному определяют то, когда учетная запись компьютера (или пользователя, неважно), признается устаревшей и не подлежит дальнейшему использованию. Что касается меня, то я обращаю внимание на те учетные записи, у которых пароли не менялись в течение определенного периода времени. Этот период для меня составляет 90 дней – если компьютер не сменил пароль вместе с доменом за этот период, скорее всего он находится оффлайн и является устаревшим. Используется командлет Get-ADComputer :

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Select name,passwordlastset

Фильтр замечательно работает с жестким значением, но этот код будет обновляться для всех учетных записей компьютеров, которые не изменили своих паролей с 1 января 2012 года. Результаты приведены на рисунке 5.


Рис. 5. Находим устаревшие учетные записи компьютеров

Другой вариант: предположим, вы хотя бы на функциональном уровне домена Windows 2003. Поставьте фильтр по свойству LastLogontimeStamp . Это значение – число 100 наносекундных интервалов с 1 января, 1601 года, и храниться в GMT, поэтому работа с этим значением слегка сложно:

PS C:\> get-adcomputer -filter "LastlogonTimestamp -gt 0" -properties * | select name,lastlogontimestamp, @{Name="LastLogon";Expression={::FromFileTime ($_.Lastlogontimestamp)}},passwordlastset | Sort LastLogonTimeStamp


Рис. 6. Конвертируем значение LastLogonTimeStamp в привычный формат

Чтобы создать фильтр, мне необходимо конвертировать дату, например, 1 января 2012, в корректный формат. Конвертация осуществляется в FileTime:

PS C:\> $cutoff=(Get-Date "1/1/2012").ToFileTime() PS C:\> $cutoff 129698676000000000

Теперь я могу использовать эту переменную в фильтре для Get-ADComputer :

PS C:\> Get-ADComputer -Filter "(lastlogontimestamp -lt $cutoff) -or (lastlogontimestamp -notlike "*")" -property * | Select Name,LastlogonTimestamp,PasswordLastSet

Приведённый код находит те же самые компьютеры, что были показаны на рисунке 5.

Задача 9: Деактивировать учетную запись компьютера

Возможно, когда Вы найдете неактивные или устаревшие учетные записи, Вы захотите деактировать их. Сделать это довольно просто. Мы будем использовать тот же командлет, что использовали в работе с учетными записями пользователей. Вы можете уточнить его, использовав samAccountname учетной записи.

PS C:\> Disable-ADAccount -Identity "chi-srv01$" -whatif What if: Performing operation "Set" on Target "CN=CHI-SRV01, CN=Computers,DC=GLOBOMANTICS,DC=local".

Или же использовав конвейерное выражение:

PS C:\> get-adcomputer "chi-srv01" | Disable-ADAccount

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

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Disable-ADAccount

Задача 10: Найти компьютеры по типу

Мне также часто задают вопрос, как найти учетные записи компьютеров по типу, например, серверы или рабочие станции. С вашей стороны это требует определенной креативности. В AD нет ничего такого, чтобы отличало сервер от клиента, разве что ОС. Если Ваш компьютер работает под Windows Server 2008, придется слегка сделать несколько дополнительных действий.
Для начала необходимо получить список ОС, а затем осуществляем фильтрацию учетных записей по имеющимся ОС.

PS C:\> Get-ADComputer -Filter * -Properties OperatingSystem | Select OperatingSystem -unique | Sort OperatingSystem

Результаты показаны на рисунке 7.


Рис. 7. Извлечение списка ОС

Я хочу найти все компьютеры, на которых стоит серверная ОС:

PS C:\> Get-ADComputer -Filter "OperatingSystem -like "*Server*"" -properties OperatingSystem,OperatingSystem ServicePack | Select Name,Op* | format-list

Результаты приведены на рисунке 8.

Как и другими командлетами AD Get, Вы можете настроить поисковые параметры и ограничить запрос отдельными OU, если это необходимо. Все выражения, которые я показал, могут быть интегрированы в большие PowerShell выражения. Например, Вы можете сортировать, группировать, применять фильтры, экспортировать в CSV или создавать и отправлять на почту HTML отчеты – и все это из PowerShell! При этом Вам не придется писать ни единого скрипа.
Вот Вам бонус: отчет о возрасте пароля пользователя (user password-age report), сохраненный в HTML файле:

PS C:\> Get-ADUser -Filter "Enabled -eq "True" -AND PasswordNeverExpires -eq "False"" -Properties PasswordLastSet,PasswordNeverExpires,PasswordExpired | Select DistinguishedName,Name,pass*,@{Name="PasswordAge"; Expression={(Get-Date)-$_.PasswordLastSet}} |sort PasswordAge -Descending | ConvertTo-Html -Title "Password Age Report" | Out-File c:\Work\pwage.htm

Хотя это выражение может выглядеть слегка пугающим, при минимальном знании PowerShell им легко воспользоваться. И остается лишь последний совет: как определить кастомное свойство под названием PasswordAge . Значение представляет собой промежуток между сегодняшним днем и свойством PasswordLastSet. Затем я сортирую результаты для моего нового свойства. На рисунке 9 показан выход для моего небольшого тестового домена.

Upd:
В посте приведен перевод статьи на портале

Посвященную использования PowerShell для администрирования AD. В качестве исходного пункта автор решил взять 10 типичных задач администрирования AD и рассмотреть то, как их можно упростить, используя PowerShell:

  1. Сбросить пароль пользователя
  2. Активировать и деактивировать учетные записи
  3. Разблокировать учетную запись пользователя
  4. Удалить учетную запись
  5. Найти пустые группы
  6. Добавить пользователей в группу
  7. Вывести список членов группы
  8. Найти устаревшие учетные записи компьютеров
  9. Деактивировать учетную запись компьютера
  10. Найти компьютеры по типу

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

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

Требования

Чтобы использовать PowerShell для управления AD, нужно соблюсти несколько требований. Я собираюсь продемонстрировать, как командлеты для AD работают на примере компьютера на Windows 7.
Чтобы использовать командлеты, контроллер домена у Вас должен быть уровня Windows Server 2008 R2, или же Вы можете скачать и установить Active Directory Management Gateway Service на наследуемых контроллерах домена (legacy DCs). Внимательно прочитайте документацию перед установкой; требуется перезагрузка КД.
На стороне клиента, скачайте и установите (RSAT) либо для Windows 7 , либо для Windows 8 . В Windows 7, Вам необходимо будет открыть в Панели управления (Control Panel) раздел Программы (Programs) и выбрать Включить или выключить функции Windows (Turn Windows Features On or Off) . Найдите Remote Server Administration Tools и раскройте раздел Role Administration Tools . Выберите подходящие пункты для AD DS and AD LDS Tools, особенно обратите внимание на то, что должен быть выбран пункт Active Directory Module for Windows PowerShell , как показано на рисунке 1. (В Windows 8 все инструменты выбраны по умолчанию). Теперь мы готовы работать.

Рис.1 Включение AD DS и AD LDS Tools

Я вошел в систему под учетной записью с правами доменного администратора. Большинство командлетов, которые я буду показывать, позволят Вам уточнить альтернативные полномочия (credentials). В любом случае я рекомендую прочитать справку (Get-Help ) и примеры, которые я буду демонстрировать ниже.
Начните сессию PowerShell и импортируйте модуль:

PS C:\> Import-Module ActiveDirectory

В результате импорта создается новый PSDrive, но мы не будем использовать его. Однако, Вы можете посмотреть, какие команды имеются в импортированном модуле.

PS C:\> get-command -module ActiveDirectory

Прелесть этих команд в том, что если я могу использовать команду для одного объекта AD, то ее можно использовать для 10, 100 и даже 1000. Посмотрим, как некоторые из этих командлетов работают.

Задача 1: Сброс пароля пользователя

Давайте начнем с типичной задачи: сброс пароля пользователя. Сделать это легко и просто можно через командлет Set-ADAccountPassword . Сложная часть заключается в том, что новый пароль должен быть уточнен как защищенная строка: фрагмент текста, который зашифрован и хранится в памяти на протяжении PowerShell сессии. Во-первых, создадим переменную с новым паролем:
PS C:\> $new=Read-Host "Enter the new password" -AsSecureString

Затем, введем новый пароль:

Теперь мы можем извлечь учетную запись (использование samAccountname – лучший вариант) и задать новый пароль. Вот пример для пользователя Jack Frost:

PS C:\> Set-ADAccountPassword jfrost -NewPassword $new

К сожалению, в случае с этим командлетом наблюдается баг: -Passthru , -Whatif , и –Confirm не работают. Если Вы предпочитаете короткий путь, попробуйте следующее:

PS C:\> Set-ADAccountPassword jfrost -NewPassword (ConvertTo-SecureString -AsPlainText -String "P@ssw0rd1z3" -force)

В итоге мне необходимо, чтобы Jack сменил пароль при следующем входе в систему, и я модифицирую учетную запись используя Set-ADUser .

PS C:\> Set-ADUser jfrost -ChangePasswordAtLogon $True

Результаты выполнения командлета не пишутся в консоль. Если это необходимо сделать, используйте –True . Но я могу узнать, успешно или нет прошла операция, произведя извлечения имени пользователя с помощью командлета Get-ADUser и уточнив свойство PasswordExpired , как показано на рисунке 2.


Рис. 2. Результаты работы командлета Get-ADUser Cmdlet со свойством PasswordExpired

Итог: сбросить пароль пользователя с помощью PowerShell совсем не сложно. Признаюсь, что сбросить пароль также просто через оснастку Active Directory Users and Computers консоли Microsoft Management Console (MMC). Но использование PowerShell подходит в том случае, если Вам необходимо делегировать задачу, Вы не хотите разворачивать вышеупомянутую оснастку или сбрасываете пароль в ходе большого автоматизированного ИТ-процесса.

Задача 2: Активировать и деактивировать учетные записи

А теперь давайте деактивируем учетную запись. Продолжим работать с Jack Frost. Этот код использует параметр –Whatif , который Вы можете встретить в других комадлетах, которые осуществляют изменения, чтобы проверить мою команду не запуская ее.

PS C:\> Disable-ADAccount jfrost -whatif What if: Performing operation "Set" on Target "CN=Jack Frost, OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

А теперь деактивируем по-настоящему:

PS C:\> Disable-ADAccount jfrost

А когда настанет время активировать учетную запись, какой командлет нам поможет?

PS C:\> Enable-ADAccount jfrost

Эти командлеты могут быть использованы в конвейерном выражении (pipelined expression), позволяя активировать или деактивировать столько учетных записей, сколько душе угодно. Например, этот код деактивирует все учетные записи в отделе продаж (Sales)

PS C:\> get-aduser -filter "department -eq "sales"" | disable-adaccount

Конечно, писать фильтр для Get-ADUser довольно-таки сложно, но именно здесь использование параметра –Whatif вместе с командлетом Disable-ADAccount приходит на помощь.

Задача 3: Разблокировать учетную запись пользователя

Рассмотрим ситуацию, когда Jack заблокировал свою учетную запись, пытаясь ввести новый пароль. Вмест того, чтобы пытаться найти его учетную запись через GUI, процедуру разблокировки можно осуществить с помощью простой команды.

PS C:\> Unlock-ADAccount jfrost

Командлет также поддерживает параметры -Whatif и -Confirm .

Задача 4: Удалить учетную запись

Неважно, сколько пользователей Вы удаляете, - это просто осуществить с помощью командлета Remove-ADUser . Мне не хочется удалять Jack Frost, но если бы я захотел, то использовал бы такой код:

PS C:\> Remove-ADUser jfrost -whatif What if: Performing operation "Remove" on Target "CN=Jack Frost,OU=staff,OU=Testing,DC=GLOBOMANTICS,DC=local".

Или я могу ввести несколько пользователей и удалить их с помощью одной простой команды:

PS C:\> get-aduser -filter "enabled -eq "false"" -property WhenChanged -SearchBase "OU=Employees, DC=Globomantics,DC=Local" | where {$_.WhenChanged -le (Get-Date).AddDays(-180)} | Remove-ADuser -whatif

С помощью этой команды будут найдены и удалены все деактивованные учетные записи подразделения (OU) Employees, которые не менялись в течение 180 и более дней.

Задача 5: Поиск пустых групп

Управление группами – занятие бесконечное и неблагодарное. Существует множество способов найти пустые группы. Некоторые выражения могут работать лучше, чем другие, в зависимости от Вашей организации. Код, приведенный ниже, позволит найти все группы в домене, включая встроенные (built-in).

PS C:\> get-adgroup -filter * | where {-Not ($_ | get-adgroupmember)} | Select Name

Если у Вас есть группы с сотнями членов, тогда использование этой команды может занять много времени; Get-ADGroupMember проверяет каждую группу. Если Вы можете ограничить или настроить, это будет лучше.
Вот еще один подход:

PS C:\> get-adgroup -filter "members -notlike "*" -AND GroupScope -eq "Universal"" -SearchBase "OU=Groups,OU=Employees,DC=Globomantics, DC=local" | Select Name,Group*

Эта команда находит все универсальные группы (Universal groups), которые не имеют членство в OU Groups и выводит некоторые из свойств. Результат приведен на рисунке 3.


Рис. 3. Поиск и фильтрация универсальных групп

Задача 6: Добавление пользователей в группу

Давайте добавим Jack Frost в группу Chicago IT:

PS C:\> add-adgroupmember "chicago IT" -Members jfrost

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

PS C:\> Add-ADGroupMember "Chicago Employees" -member (get-aduser -filter "city -eq "Chicago"")

Я использовал вводное конвейерное выражение (parenthetical pipelined expression), чтобы найти всех пользователей, у которых имеется свойство City в Chicago. Код в скобках выполняется, и полученные объекты передаются в параметр –Member. Каждый пользовательский объект добавляется в группу Chicago Employees. Неважно, имеем ли мы дело с 5 или 5000 пользователей, обновление членства в группах занимает всего несколько секунд. Это выражение может также быть написано с использованием ForEach-Object , что может быть удобнее:

PS C:\> Get-ADUser -filter "city -eq "Chicago"" | foreach {Add-ADGroupMember "Chicago Employees" -Member $_}

Задача 7: Выводим список членов группы

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

PS C:\> Get-ADGroupMember "Domain Admins"

На рисунке 4 приведен результат.


Рис. 4. Члены группы Domain Admins

Командлет выводит объект AD для каждого члена группы. А что делать с вложенными группами? Моя группа Chicago All Users является коллекцией вложенных групп. Чтобы получить список всех учетных записей, я всего лишь должен использовать параметр –Recursive .

PS C:\> Get-ADGroupMember "Chicago All Users" -Recursive | Select DistinguishedName

Если Вы хотите пойти другим путем – найти, в каких группах пользователь состоит, - используйте свойство пользователя MemberOf :

PS C:\> get-aduser jfrost -property Memberof | Select -ExpandProperty memberOf CN=NewTest,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago Test,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago IT,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local CN=Chicago Sales Users,OU=Groups,OU=Employees, DC=GLOBOMANTICS,DC=local

Я использовал параметр -ExpandProperty , чтобы вывести имена MemberOf как строки.

Задача 8: Найти устаревшие учетные записи компьютеров

Мне часто задают этот вопрос: “Как найти устаревшие учетные записи компьютеров?”. И я всегда отвечаю: “А что для вас является устаревшим?” Компании по-разному определяют то, когда учетная запись компьютера (или пользователя, неважно), признается устаревшей и не подлежит дальнейшему использованию. Что касается меня, то я обращаю внимание на те учетные записи, у которых пароли не менялись в течение определенного периода времени. Этот период для меня составляет 90 дней – если компьютер не сменил пароль вместе с доменом за этот период, скорее всего он находится оффлайн и является устаревшим. Используется командлет Get-ADComputer :

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Select name,passwordlastset

Фильтр замечательно работает с жестким значением, но этот код будет обновляться для всех учетных записей компьютеров, которые не изменили своих паролей с 1 января 2012 года. Результаты приведены на рисунке 5.


Рис. 5. Находим устаревшие учетные записи компьютеров

Другой вариант: предположим, вы хотя бы на функциональном уровне домена Windows 2003. Поставьте фильтр по свойству LastLogontimeStamp . Это значение – число 100 наносекундных интервалов с 1 января, 1601 года, и храниться в GMT, поэтому работа с этим значением слегка сложно:

PS C:\> get-adcomputer -filter "LastlogonTimestamp -gt 0" -properties * | select name,lastlogontimestamp, @{Name="LastLogon";Expression={::FromFileTime ($_.Lastlogontimestamp)}},passwordlastset | Sort LastLogonTimeStamp


Рис. 6. Конвертируем значение LastLogonTimeStamp в привычный формат

Чтобы создать фильтр, мне необходимо конвертировать дату, например, 1 января 2012, в корректный формат. Конвертация осуществляется в FileTime:

PS C:\> $cutoff=(Get-Date "1/1/2012").ToFileTime() PS C:\> $cutoff 129698676000000000

Теперь я могу использовать эту переменную в фильтре для Get-ADComputer :

PS C:\> Get-ADComputer -Filter "(lastlogontimestamp -lt $cutoff) -or (lastlogontimestamp -notlike "*")" -property * | Select Name,LastlogonTimestamp,PasswordLastSet

Приведённый код находит те же самые компьютеры, что были показаны на рисунке 5.

Задача 9: Деактивировать учетную запись компьютера

Возможно, когда Вы найдете неактивные или устаревшие учетные записи, Вы захотите деактировать их. Сделать это довольно просто. Мы будем использовать тот же командлет, что использовали в работе с учетными записями пользователей. Вы можете уточнить его, использовав samAccountname учетной записи.

PS C:\> Disable-ADAccount -Identity "chi-srv01$" -whatif What if: Performing operation "Set" on Target "CN=CHI-SRV01, CN=Computers,DC=GLOBOMANTICS,DC=local".

Или же использовав конвейерное выражение:

PS C:\> get-adcomputer "chi-srv01" | Disable-ADAccount

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

PS C:\> get-adcomputer -filter "Passwordlastset -lt "1/1/2012"" -properties *| Disable-ADAccount

Задача 10: Найти компьютеры по типу

Мне также часто задают вопрос, как найти учетные записи компьютеров по типу, например, серверы или рабочие станции. С вашей стороны это требует определенной креативности. В AD нет ничего такого, чтобы отличало сервер от клиента, разве что ОС. Если Ваш компьютер работает под Windows Server 2008, придется слегка сделать несколько дополнительных действий.
Для начала необходимо получить список ОС, а затем осуществляем фильтрацию учетных записей по имеющимся ОС.

PS C:\> Get-ADComputer -Filter * -Properties OperatingSystem | Select OperatingSystem -unique | Sort OperatingSystem

Результаты показаны на рисунке 7.


Рис. 7. Извлечение списка ОС

Я хочу найти все компьютеры, на которых стоит серверная ОС:

PS C:\> Get-ADComputer -Filter "OperatingSystem -like "*Server*"" -properties OperatingSystem,OperatingSystem ServicePack | Select Name,Op* | format-list

Результаты приведены на рисунке 8.

Как и другими командлетами AD Get, Вы можете настроить поисковые параметры и ограничить запрос отдельными OU, если это необходимо. Все выражения, которые я показал, могут быть интегрированы в большие PowerShell выражения. Например, Вы можете сортировать, группировать, применять фильтры, экспортировать в CSV или создавать и отправлять на почту HTML отчеты – и все это из PowerShell! При этом Вам не придется писать ни единого скрипа.
Вот Вам бонус: отчет о возрасте пароля пользователя (user password-age report), сохраненный в HTML файле:

PS C:\> Get-ADUser -Filter "Enabled -eq "True" -AND PasswordNeverExpires -eq "False"" -Properties PasswordLastSet,PasswordNeverExpires,PasswordExpired | Select DistinguishedName,Name,pass*,@{Name="PasswordAge"; Expression={(Get-Date)-$_.PasswordLastSet}} |sort PasswordAge -Descending | ConvertTo-Html -Title "Password Age Report" | Out-File c:\Work\pwage.htm

Хотя это выражение может выглядеть слегка пугающим, при минимальном знании PowerShell им легко воспользоваться. И остается лишь последний совет: как определить кастомное свойство под названием PasswordAge . Значение представляет собой промежуток между сегодняшним днем и свойством PasswordLastSet. Затем я сортирую результаты для моего нового свойства. На рисунке 9 показан выход для моего небольшого тестового домена.

Upd:
В посте приведен перевод статьи на портале

Active Directory - служба каталогов корпорации Microsoft для ОС семейства Windows NT.

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

В чем суть работы Active Directory и какие задачи она решает? Читайте дальше.

Принципы организации одноранговых и многоранговых сетей

Но возникает другая проблема, что если пользователь user2 на РС2 решит изменить свой пароль? Тогда если пользователь user1 сменит пароль учетной записи, доступ user2 на РС1 к ресурсу будет невозможен.

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

А если их будет не 20 а 200?

Как вы понимаете администрирование сети при таком подходе превращается в кромешный ад.

Поэтому подход с использованием рабочих групп подходит для небольших офисных сетей с количеством ПК не более 10 единиц.

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

Этим узлом и выступает контролер домена - Active Directory.

Контролер домена

Контролер хранит базу данных учетных записей, т.е. он хранит учетку и для РС1 и для РС2.

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

Теперь, когда пользователь заходит на ПК, вводя свой логин и пароль , эти данные передаются в закрытом виде на контролер домена, который выполняет процедуры аутентификации и авторизации.

После контролер выдает пользователю, осуществившему вход, что-то вроде паспорта, с которым он в дальнейшем работает в сети и который он предъявляет по запросу других компьютеров сетки, серверов к чьим ресурсам он хочет подключиться.

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

Число таких сохраненных ресурсов может достигать миллионов объектов.

В качестве контролера домена могут выступать следующие версии MS Windows : Windows Server 2000/2003/2008/2012 кроме редакций Web-Edition.

Контролер домена помимо того, что является центром аутентификации сети, также является центром управления всеми компьютерами.

Сразу после включения компьютер начинает обращаться к контролеру домена, задолго до появления окна аутентификации.

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

Установка Active Directory

Рассмотрим пример установки Active Directory на Windows Server 2008 R2. Итак для установки роли Active Directory, заходим в «Server Manager»:

Добавляем роль «Add Roles»:

Выбираем роль Active Directory Domain Services:

И приступаем к установке:

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

После установки роли контролера домена, приступим к установке самого контролера.

Нажимаем «Пуск» в поле поиска программ вводим название мастера DCPromo, запускаем его и ставим галочку для расширенных настроек установки:

Жмем «Next» из предложенных вариантов выбираем создание нового домена и леса.

Вводим имя домена, например, example.net.

Пишем NetBIOS имя домена, без зоны:

Выбираем функциональный уровень нашего домена:

Ввиду особенностей функционирования контролера домена, устанавливаем также DNS-сервер .

Расположения базы данных, файла логов, системного тома оставляем без изменений:

Вводим пароль администратора домена:

Проверяем правильность заполнения и если все в порядке жмем «Next».

После этого пойдет процесс установки, в конце которого появится окно, которое сообщает, об успешной установке:

Введение в Active Directory

В докладе рассматриваются два типа компьютерных сетей, которые можно создать при помощи операционных систем Microsoft: рабочая группа (workgroup) и домен Active Directory.

В первой части цикла статей я сделал краткий новый возможностей Active Directory. Давайте посмотрим на все это повнимательнее….

Конфигурирование роли AD DS

Для установки доменных служб Active Directory теперь используется Диспетчер Серверов и Windows PowerShell, как и для установки всех других ролей и компонентов сервера и в Windows Server 2012.

Интеграция Диспетчера Серверов и AD DS

Диспетчер Серверов выступает в качестве единого концентратора задач по управлению серверами. Его панель периодически обновляет установленные роли и группы удаленных серверов . Server Manager обеспечивает централизованное управление локальными и удаленными серверами без необходимости доступа к локальной консоли. Доменные службы Active Directory являются одной из этих ролей; запустив Диспетчера Сервера на контроллере домена или средства удаленного администрирования сервера на клиенте Windows 8, вы увидите все важные события, произошедшие за последнее время на контроллерах домена в лесу. Эти представления включают в себя:

Доступность сервера

Монитор производительности с предупреждениями о высокой загрузке процессора и памяти

Состояние служб Windows, относящихся к AD DS

Последние предупреждения,связанные с Directory Services и записи ошибок в журнале событий

Лучшие практики анализа контроллеров домена и набор рекомендаций Microsoft

Корзина в Центре администрирования Active Directory

В Windows Server 2008 R2 впервые появилась корзина Active Directory, которая позволяла восстанавливать удаленные объекты Active Directory без восстановления из резервной копии, перезапуска доменных служб Active Directory или перезагрузки контроллеров домена. Windows Server 2012 принес с собой новый графический интерфейс для Корзины в Центре администрирования Active Directory .Это позволяет администраторам включить корзину и затем найти или восстановить удаленные объекты в доменном контексте в лесу, и все это без непосредственного использования командлетов Windows PowerShell.Центр администрирования Active Directory и Корзина Active Directory по-прежнему используют движок Windows PowerShell , поэтому предыдущие сценарии и выполнение отдельных командлетов по-прежнему могут быть с успехом применены.

Детальные настройки политик блокировки учетных записей и паролей в Центре администрирования

В Windows Server 2008 появились детальные политики паролей, которые позволили администраторам настроить несколько паролей и политик блокировки учетной записи в домене. Это решение позволяло более гибко управлять доменной политикой для обеспечения более или менее строгиих правил паролей, на основе пользователей и групп. У него не было отдельного интерфейса управления и администраторам приходилось настраивать его с помощью Ldp.exe или Adsiedit.msc. Windows Server 2008 R2 представил модуль ActiveDirectory для Windows PowerShell, который позволил администраторам использовать интерфейс командной строки для FGPP. Windows Server 2012 приносит графический интерфейс для детального управления политикой паролей.Центр администрирования Active Directory теперь является отправной точкой упрощенного управления FGPP для всех администраторов.

Просмотр истории Windows PowerShell

Windows Server 2008 R2 представил Центр администрирования Active Directory, который заменил известную администраторам еще со времен Windows 2000 остнастку Active Directory пользователи и компьютеры. .Центр администрирования Active Directory просто использует под капотом движок модуля ActiveDirectory для PowerShell, предоставляя графический интерфейс для выполнения команд администратора.

Поскольку сам модуль ActiveDirectory содержит более ста команд, в них можно слегка запутаться. Сейчас PowerShell тесно интегрирован в стратегию администрирования ОС Windows ,и Центр администрирования Active Directory теперь включает в себя просмотр истории выполнения команд, который позволяет вам видеть команду, которая была выполнена в графическом интерфейсе. Вы также можете осуществлять здесь поиск и копирование, очищать историю и добавлять заметки в простом и удобном интерфейсе. Это позволит администратору удобно использовать использовать графический интерфейс для создания и редактирования объектов, а затем просмотреть их создание в истории просмотра, чтобы узнать больше о возможностях сценариев PowerShell на примерах.

Репликация средствами PowerShell

Ура!Теперь старый добрый repadmin может отправиться на покой- в новом модуле PowerShell для Active Directory теперь есть гораздо более богатый функционал- он позволяет конфигурировать новые или существующие сайты, подсети,соединения,стоимости сайтов и серверы-плацдармы.Также можно управлять метаданными и статусом репликации,очередью вектором обновления (UTDVEC).

Использование командлетов репликации совместно с другими командлетами модуля AD PowerShell позволяют администрировать весь лес используя только одну консоль.

Все это дает дополнительный толчок администраторам, желающим воспользоваться всеми новыми возможностями Windows Server без использования графического интерфейса,что сократит поверхность атак и время на обслуживание сервера. Это приобретает особое значение, если серверы должны быть развернуты в высоко защищенных сетях, таких, как Secret Internet Protocol Router (SIPR) и корпоративных сетях периметра (DMZ).

Позволю себе здесь заметить, что новый мастер установки Windows Server 2012 сразу же настоятельно рекомендует установить сервер в режиме Core, как наиболее эффективную установку, в отличие от предыдущей версии установщика в Windows Server 2008 R2.(эта опция сразу выбрана по умолчанию)

Windows Server Technical Reference

Улучшения в области выдачи и управления RID

В Windows 2000 появился RID Master, который выдавал пул относительных идентификаторов для контроллеров домена, чтобы последние могли создать идентификаторы безопасности (SID)для принципалов безопасности, таких как пользователи, группы и компьютеры. По умолчанию, глобальное пространство RID ограничено 2 30 (или 1073741823) общего количества идентификаторов,созданных в домене. Идентификаторы SID не могут быть повторно созданными или перевыпущенными. В течение долгого времени в больших доменах может начать иссякать пул RID либо возникшие инциденты могут привести к ненужным истощениям пула RID . Windows Server 2012 пересматривает ряд моментов, связанных с выдачей RID и вопросами управления впервые с 1999 года. К ним относятся:

  • Периодическое использование пула RID теперь записывается как предупреждение в журнале событий.
  • Создается событие о недеиствительном пуле RID
  • Максимальное ограничение политики RID на размер блока RID теперь применяется принудительно.
  • Искусственное завышение RID применяется принудительно и заносит оповещение в журнал событий, если глобальное пространство RID истощается, позволяя тем самым администратору предпринять действия прежде, чем оно будет исчерпано.
  • Глобальное пространствоRID теперь увеличено на один бит;),удваивая размер адресов до 2 31 (2,147,483,648 SIDs) How Security Identifiers Work

потрогать риды руками поможет…..DCDIAG:

Dcdiag.exe /TEST:RidManager /v | find /i “Available RID Pool for the Domain”

или PowerShell

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

#######################
# Get Domain RID Info #
#######################
## Based on code From https://blogs.technet.com/b/askds/archive/2011/09/12/managing-rid-pool-depletion.aspx
Import-Module ActiveDirectory
Write-Verbose “Get RID Information from AD including the number of RIDs issued and remaining `r “
$RIDManagerProperty = Get-ADObject “cn=rid manager$,cn=system,$ADDomainDistinguishedName” -property RIDAvailablePool -server ((Get-ADDomain $DomainDNS).RidMaster)
$RIDInfo = $RIDManagerProperty.RIDAvailablePool
$TotalSIDS = $RIDInfo / (::Pow(2,32))
$Temp64val = $TotalSIDS * (::Pow(2,32))
$CurrentRIDPoolCount = $RIDInfo – $Temp64val
$RIDsRemaining = $TotalSIDS – $CurrentRIDPoolCount

$RIDsIssuedPcntOfTotal = ($CurrentRIDPoolCount / $TotalSIDS)
$RIDsIssuedPercentofTotal = “{0:P2}” -f $RIDsIssuedPcntOfTotal
$RIDsRemainingPcntOfTotal = ($RIDsRemaining / $TotalSIDS)
$RIDsRemainingPercentofTotal = “{0:P2}” -f $RIDsRemainingPcntOfTotal

Write-Output “RIDs Issued: $CurrentRIDPoolCount ($RIDsIssuedPercentofTotal of total) `r “
Write-Output “RIDs Remaining: $RIDsRemaining ($RIDsRemainingPercentofTotal of total) `r “

Продолжение следует… 🙂

Главная задача администратора - создание учетных записей пользователей и групп и управление ими. В этой главе вы научи¬тесь создавать учетные записи пользователей и управлять ими из командной строки. Затем вы увидите, как делать то же самое применительно к группам. В Microsoft Windows Server 2003 определено два типа учетных записей пользователей.

  • Доменные учетные записи пользователей - это учетные записи пользователей, определенные в Active Directory и способные получать доступ ко всем ресурсам домена. Вы можете создавать такие учетные записи и управлять ими, используя команды служб каталогов.
  • Локальные учетные записи пользователей - это учетные записи пользователей, определенные на локальном компь¬ютере и требующие аутентификации, прежде чем они по¬лучат доступ к сетевым ресурсам. Вы можете создавать та¬кие учетные записи и управлять ими с помощью команд сетевых сервисов.

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

  • DSADD USER - создает учетную запись пользователя в Active Directory. Ее синтаксис:

dsadd user йМПользователя [-samid SAM-имя] [-upn UPN] [-fn Имя] [-mi Отчество] [-In Фамилия] [-display Отображаемое Имя] [-empid ИдентификаторСотрудника] [-pwd {Пароль | }] [-desc Описание] [-memberof Группа,..] [-office Офис] [-tel Телефон] [-email E-mail] [-hometel ДомашнийТелефон] [-pager Пейджер] [-mobile МобильныйТелефон] [-fax Факс] [-iptel IP-телефон] [-webpg Web-страница] [-title Должность] [-dept Отдел] [-company Компания] [-mgr Менед­жер] [-hmdir ОсновнойКаталог] [-hmdrv БукваДиска:] [-profile Путь] [-loser Путь] [-mustchpwd {yes | no}] [-canchpwd {yes | no}] [-reversiblepwd {yes | no}] [-pwdneverexpires {yes | no}] [-acctexpires ЧислоДней] [-disabled {yes | no}] [{-s Сервер | -d Домен}] [-u ИмяПользователя] [-p {Пароль | *}] [-q] [{-uc | -uco | -uci}]

  • DSGET USER - выводит свойства учетных записей поль­зователей по синтаксису одного из двух видов. Для про­смотра свойств множества учетных записей пользователей предназначен синтаксис:

dsget user DNnonbaoeaTeflH ... [-dn] [-samid] [-sid] [-upn] [-fn] [-mi] [-In] [-display] [-empid] [-desc] [-office] [-tel] [-email] [-hometel] [-pager] [-mobile] [-fax] [-iptel] [-webpg] [-title] [-dept] [-company] [-mgr] [-hmdir] [-hmdrv] [-profile] [-loser] [-mustchpwd] [-canchpwd] [-pwdneverexpires] [-disabled] [-acctexpires] [-reversiblepwd] [{-uc | -uco | -uci}] [-part ОИРаздела [-qlimit] [-qused]] [{-s Сервер | -d Домен}] [-u ИмяПользователя] [-p {Пароль | *}] [-c] [-q] [-1]

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

dsget user ОМПользователя [-memberof [-expand]] [{-s Сервер I -d Домен}] [-u ИмяПользователя] [-p {Пароль | *}] [-с] [-q] [-1] [{-uc I -uco I -uci}]

  • DSMOD USER - изменяет атрибуты одной или более учетных записей в каталоге:

dsmod user ОИПользователя... [-upn UPN] [-fn Имя] [-mi Отчество] [-In Фамилия] [-display ОтображаемоеИмя] [-empid ИдентификаторСотрудника] [-pwd {Пароль | *}] [-desc Описание] [-office Офис] [-tel Телефон] [-email E-mail] [-hometel ДомашнийТелефон] [-pager Пейджер] [-mobile МобильныйТелефон] [-fax Факс] [-iptel IP-телефон] [-webpg Web-страница] [-title Должность] [-dept Отдел] [-company Компания] [-mgr Менеджер] [-hmdir ОсновнойКаталог] [-hmdrv БукваДиска:] [-profile Путь] [-loser Путь] [-mustchpwd {yes I no}] [-canchpwd {yes | no}] [-reversiblepwd {yes | no}] [-pwdneverexpires {yes | no}] [-acctexpires ЧислоДней] [-disabled {yes | no}] [{-s Сервер | -d Домен}] [-u ИмяПользователя] [-p {Пароль | «}] [-c] [-q] [{-uc | -uco I -uci}]

Для управления локальными учетными записями служит команда NET USER - одна из команд сетевых сервисов, В частности, NET USER поддерживает несколько видов синтак­сиса, и вы используете тот из них, который подходит для ва­шей ситуации. Рассмотрим несколько примеров.

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

net user [ИмяПользователя [Пароль | *] ] [,День[-День]] .Время [-Время] [,Время[-Время]] [;...] I all}] I «>]

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

  • net user [ИмяПользователя {Пароль | *} /add ] [,День[-День]] .Время [-Время] [,Время[-Время]] [;...] | all}] | *}]]

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

  • net user ИмяПользователя /delete