Использование get-aduser для получения разной информации о пользователях домена ad; iteron

Get-AdUser Syntax

Active Directory Get-AdUser syntax as given below

Get-ADUser         -Filter <String>   >]
            
      

Get-ADUser          <ADUser>   
   >]      

Get-ADUser         -LDAPFilter <String>   >]
            
      

Description

Get-AdUser is used to get one or more active directory objects or perform a search to get specific users.

–AuthType – authentication method to use based on either Basic (or 1) or Negotiate (or 0). It has Negotiate default authentication method.

SSL (Secure Socket Layer) connection is required to use the Basic Authentication method.

–Credential PSCredential – It specifies user credentials required to perform the get-aduser cmdlet. It default accepts the credentials of logged-on users.

To use the Credential parameter, use username as User1 or domain\User1 or you can create and use  object by using  cmdlet.

-Identity – It specifies Active Directory user by using below property value

  • Distinguished Name
  • SAMAccountName
  • Security Identifier
  • GUID

The identifier specified in parenthesis is the LDAP display name.

-Partition – It specifies the distinguished name of an active directory partition.

–Filter – It specifies a query string (PowerShell Expression Language Syntax) to retrieves Active Directory objects. PowerShell wildcards other than * are not supported by  syntax.

-LDAPFilter – LDAPFilter query string is used to filter Active Directory objects.

Get-AdUser cmdlet returns the default set of properties. However, if you want to get all properties, use the Properties parameter.

Let’s understand using PowerShell Get-AdUser with different examples.

Настройка политики аудита

Самый удобный способ создать политику — использовать оснастку ‘Group Policy Management’. Эта оснастка может быть открыта через RSAT или на домен-контроллер. Оснастку групповых политик так же открывается командой:

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

В примерах я использую OU Moscow. Через Powershell создать и привязать политику тоже можно. Это делается следующим образом:

Политика, которая нам нужна, называется ‘Audit account management/Аудит управления учетной записью’. Она включает аудит связанный с изменением пользователя, пароля и групп. Что бы это сделать пройдите по следующему пути 

  • ‘Computer Configuration’ — ‘Policies’ — ‘Windows Settings’ — ‘Security Settings’  — ‘Local Policies’ = ‘Audit Policy’;
  • ‘Конфигурация компьютера’ — ‘Параметры Windows’ — ‘Параметры безопасности’ — ‘Локальные политики’ — ‘Политика аудита’.

В этой политике нужно включить учет успешных попыток изменения данных (Success) и провала (Failure):

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

Ниже, для примера, показано как через Powershell устанавливается политика включающая заставку через 900 секунд:

У домен контроллеров есть роль FSMO, которая отвечает за пароли. Ее название PDC — ‘Primary domain controller’. На домен контроллере, который держит эту роль, и будут собираться все события связанные с политикой аудита. Увидеть кому принадлежит эта роль можно так:

На клиентских компьютерах запустим обновление политик:

Что такое редактор атрибутов Active Directory

И так ранее мы с вами установили Active Directory, и разобрались со всеми понятиями активного каталога, из которых мы выяснили, что администратор, получает информацию о всех объектах схемы в виде красивого графического интерфейса, например, оснастки ADUC, а вот контроллеры домена и другие компьютеры, получают информацию об объектах в виде языка LDAP, который лежит в основе Active Directory.

В итоге можно дать вот такое определение редактору атрибутов Actvie Directory — это дополнительная надстройка в графической утилите управления объектами активного каталога, позволяющая в удобном для человека редакторе, внести изменения в нужные атрибуты схемы, а так же проверить и посмотреть остальные значения в неизменяемых атрибутах.

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

  • Необходимо узнать distinguished name
  • Задать automapping для почты пользователю с правами только на чтение

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

List Domain Users Interactively

We will start with a simple example. We will list all domain users. In this example, we will do not provide any option or parameter to the Get-ADUser command. But after running the command we will be asked for a filter. We will provide asterisk * as a filter which means all users.

The following information is provided with the Get-ADUser command.

  • `DistingushedName` will provide the complete canonical name for the user.
  • `Enabled` will show whether the user account is enabled or not.
  • `GivenName` is the human-readable name which is generally the name and surname of the user.
  • `ObjectClass` is the user type which is generally `user`.
  • `ObjectGUID` is the unique ID of the current user or object.
  • `SamAccountName` is the or SAM account name of the user.

Create New User Accounts using the New-ADUser Cmdlet

So what is the PowerShell cmdlet used to create user objects? It’s the New-ADUser cmdlet, which is included in the Active Directory PowerShell module built into Microsoft Windows Server 2008R2/2012 and above. Therefore, the first thing we need to do is enable the AD module:

Import-Module ActiveDirectory

Now let’s take a closer look at cmdlet New-ADUser. We can get its full syntax by running the following command:

Get-Command New-ADUser –Syntax

When you know the syntax, it’s easy to add users to Active Directory:

New-ADUser B.Johnson

Now let’s check whether the user was added successfully by listing all Active Directory users using the following script:

Get-ADUser -Filter * -Properties samAccountName | select samAccountName

There it is, the last one in the list!

Parameters

-AuthType

Specifies the authentication method to use.
The acceptable values for this parameter are:

  • Negotiate or 0
  • Basic or 1

The default authentication method is Negotiate.

A Secure Sockets Layer (SSL) connection is required for the Basic authentication method.

Type: ADAuthType
Accepted values: Negotiate, Basic
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-Credential

Specifies the user account credentials to use to perform this task.
The default credentials are the credentials of the currently logged on user unless the cmdlet is run from an Active Directory module for Windows PowerShell provider drive.
If the cmdlet is run from such a provider drive, the account associated with the drive is the default.

To specify this parameter, you can type a user name, such as User1 or Domain01\User01 or you can specify a PSCredential object.
If you specify a user name for this parameter, the cmdlet prompts for a password.

You can also create a PSCredential object by using a script or by using the Get-Credential cmdlet.
You can then set the Credential parameter to the PSCredential object.

If the acting credentials do not have directory-level permission to perform the task, Active Directory module for Windows PowerShell returns a terminating error.

Type: PSCredential
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-Current

Specifies whether to return the domain of the local computer or the current logged on user.
The acceptable values for this parameter are:

  • LocalComputer or 0
  • LoggedOnUser or 1
Type: ADCurrentDomainType
Accepted values: LocalComputer, LoggedOnUser
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

-Identity

Specifies an Active Directory domain object by providing one of the following property values.
The identifier in parentheses is the Lightweight Directory Access Protocol (LDAP) display name for the attribute.
All values are for the domainDNS object that represents the domain.
The acceptable values for this parameter are:

  • A distinguished name
  • A GUID (objectGUID)
  • A security identifier (objectSid)
  • A DNS domain name
  • A NetBIOS domain name

The cmdlet searches the default naming context or partition to find the object.
If two or more objects are found, the cmdlet returns a non-terminating error.

This parameter can also get this object through the pipeline or you can set this parameter to a domain object instance.

Type: ADDomain
Position:
Default value: None
Accept pipeline input: True
Accept wildcard characters: False

-Server

Specifies the Active Directory Domain Services instance to connect to, by providing one of the following values for a corresponding domain name or directory server.
The service may be any of the following: Active Directory Lightweight Domain Services, Active Directory Domain Services or Active Directory snapshot instance.

Specify the Active Directory Domain Services instance in one of the following ways:

Domain name values:

  • Fully qualified domain name
  • NetBIOS name

Directory server values:

  • Fully qualified directory server name
  • NetBIOS name
  • Fully qualified directory server name and port

The default value for this parameter is determined by one of the following methods in the order that they are listed:

  • By using the Server value from objects passed through the pipeline
  • By using the server information associated with the Active Directory Domain Services Windows PowerShell provider drive, when the cmdlet runs in that drive
  • By using the domain of the computer running Windows PowerShell
Type: String
Position: Named
Default value: None
Accept pipeline input: False
Accept wildcard characters: False

Get All Properties

As Active Directory is a very complex environment there are a lot of attributes and properties about users. By default, only some of them are printed like Name, SID, Surname, GivenName, etc. We can also list all of these attributes with the -Properties command and asterisk * .

As we can see from the screenshot that properties like AccountExpirationDate, AccountLockoutTime, … are printed.

  • `AccountExprirationDate` will show the account expire day if it is set. If not there will be now value.
  • `AccountExpires` will show whether the account has an expiration date.
  • `AccountLockoutTime` will show the interval to lock the account when it is idle.
  • `BadLogonCount` will show how many unsuccessful login attempts occurred in the past.
  • `Created` will show the date and time information about the account creation.
  • `Company` will show the user company name of the user account if set.

Conclusion

Now you know how to create users in Active Directory using PowerShell scripts. Try performing some account creations, bulk account creations and CSV imports yourself on local or remote systems. Remember, the ADUC MMC snap-in is great for creating a few users with extended attributes, but PowerShell is much better for importing a large number of user accounts in bulk.

Jeff Melnick

Jeff is a former Director of Global Solutions Engineering at Netwrix. He is a long-time Netwrix blogger, speaker, and presenter. In the Netwrix blog, Jeff shares lifehacks, tips and tricks that can dramatically improve your system administration experience.

Using Get-AdUser by OU

By providing an identity or filter, PowerShell returns all users in the domain matching the criteria. It does not limit by OU. You’ll need to set up a “filter” for to filter by OU using .

Using the parameter allows you to begin searching for a user account in a specific OU. The parameter accepts an OU’s distinguished name (DN).

For example, you could find all users in the MyUsers OU as shown below. Using the of means to match all user accounts.

Perhaps you only want to find user accounts in a single OU and exclude any child OUs. In that case, you could use the and parameters. The parameter defines how deep in the OU hierarchy you’d like to search.

For example, if you’d like to find all user accounts in an OU and all child OUs, you’d use for the value. If you’d like to search through all child and grandchildren OUs, you’d use .

Below is an example of searching for user accounts in the MyUsers OU and all child OUs underneath it.

Просмотр

Информация о пользователях

1. Список пользователей домена:

> Get-ADUser -filter *  | Select Name, SamAccountName

2. Простая информация о пользователе:

> Get-ADUser dmosk

* где dmosk — логин пользователя в AD DS, для которого смотрим атрибуты.

3. Как посмотреть все атрибуты пользователя:

> Get-ADUser dmosk -Properties *

4. Список пользователей в определенном организационном юните:

> Get-ADUser -filter * -SearchBase «OU=Пользователи,DC=dmosk,DC=local»

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

> Get-ADUser -filter * -Properties title | where { ($_.title -eq «Инженер») } | Select Name

* в данном примере мы выгружаем пользователей, должность которых «Инженер».

6. Исключить из поиска и показа определенных пользователей.

а) Способ 1. Использовать фильтр:

> Get-ADUser -filter { Name -notlike «Мартынов Мартын Мартынович» -and Name -notlike «Макаров Макар Макарович» }

б) Способ 2. С помощью Where и массива:

> $ExcludeUsers = @(«Мартынов Мартын Мартынович», «Макаров Макар Макарович»)

> Get-ADUser -filter * | Where { $ExcludeUsers -notcontains $_.Name }

* обе команды выведут всех пользователей, кроме тех, что перечислены в фильтре.

Выгрузка пользователей в CSV (для просмотра в текстовом формате или Excel)

Выгрузку делаем при помощи командлета Export-csv.

1. Выгрузка всех данных о всех пользователях

Get-ADUser -filter * -Properties * | Export-csv -path C:\Temp\ADUsers.csv

* C:\Temp\ADUsers.csv — путь к выгружаемому файлу.

2. Выгрузка только номеров телефонов и адресов электронной почты для пользователей, находящихся в определенном контейнере:

* обратите внимание, что мы в данной выгрузки используем кодировку UTF-8 и в качестве разделителя знак ;

Список групп пользователя

Get-AdUser dmosk -Properties memberof | Select memberof -expandproperty memberof

* где expandproperty позволяет просмотреть значение коллекций в удобочитаемом виде.

Использование параметров учетных данных

В следующем примере кода показано, как использовать параметры учетных данных. В этом примере демонстрируется функция с именем , которая приведена в книге The Pester Book. Эта функция определяет параметр учетных данных с помощью техник, описанных в предыдущем разделе. Функция вызывает с помощью переменной , создаваемой функцией. Это позволяет вам изменить пользователя, выполняющего . Так как для значения по умолчанию используются пустые учетные данные, функцию можно выполнять без предоставления учетных данных.

В следующих разделах приведены различные методы по предоставлению учетных данных функции .

Запрос учетных данных

Использование может сделать код громоздким. Обычно при использовании параметра Credential только с именем пользователя командлет автоматически запрашивает пароль. Такое поведение обеспечивается атрибутом .

Примечание

При задании показанного значения реестра в этих примерах предполагается, что у вас установлены функции веб-сервера Windows. Выполните и при необходимости.

Указание учетных данных в переменной

Вы также можете предварительно указать переменную учетных данных и передать ее параметру Credential функции . Используйте этот метод с инструментами непрерывной интеграции и непрерывного развертывания (CI/CD), такими как Jenkins, TeamCity и Octopus Deploy. Пример использования Jenkins можно найти в записи блога Hodge Автоматизация с помощью Jenkins и PowerShell в Windows — часть 2.

В этом примере используется метод .NET для создания объекта учетных данных и защищенной строки для передачи в пароле.

Для этого примера защищенная строка создается с использованием пароля в формате открытого текста. Все упомянутые ранее инструменты CI/CD предоставляют защищенный метод для указания пароля во время выполнения. При использовании таких инструментов замените пароль в формате обычного текста переменной, определенной в используемом инструменте CI/CD.

Выполнение без учетных данных

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

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

01 августа 2019

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

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

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

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

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

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

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

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

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

Навигация по посту

  • Примеры Powershell Get-ADUser Filter
  • Несколько OU в Get-ADUser
  • Выгрузка пользователей из AD в Excel
  • Получение Email пользователя в Powershell
  • Примеры с паролями

Поиск и фильтрация списка пользователей AD в Powershell Get-ADUser -Filter

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

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

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

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

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

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

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

Получение списка пользователей Active Directory в Powershell Get-User из нескольких OU

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

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

Выгрузка пользователей из AD в Excel с Powershell

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

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

Получение Email пользователя AD в Powershell

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

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

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

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

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

Create a New Active Directory User Account with Password

Accounts are created with the following default properties:

  • Account is created in the “Users” container.
  • Account is disabled.
  • Account is a member of Domain Users group.
  • No password is set.
  • User must reset the password at the first logon.

Therefore, to make a new account that’s actually usable, we need to enable it using the Enable-ADAccount cmdlet and give it a password using the Set-ADAccountPassword cmdlet.

So let’s create a new account with the following attributes:

  • Name – Jack Robinson
  • Given Name – Jack
  • Surname – Robinson
  • Account Name – J.Robinson
  • User Principal Name – J.Robinson@enterprise.com
  • Path address – “OU=Managers,DC=enterprise,DC=com”
  • Password Input
  • Status – Enabled

Here’s the script we’ll use:

New-ADUser -Name "Jack Robinson" -GivenName "Jack" -Surname "Robinson" -SamAccountName "J.Robinson" -UserPrincipalName "J.Robinson@enterprise.com" -Path "OU=Managers,DC=enterprise,DC=com" -AccountPassword(Read-Host -AsSecureString "Input Password") -Enabled $true

The Read-Host parameter will ask you to input new password. Note that the password should meet the length, complexity and history requirements of your domain security policy.

Now let’s take a look at the results by running the following cmdlet:

Get-ADUser J.Robinson -Properties CanonicalName, Enabled, GivenName, Surname, Name, UserPrincipalName, samAccountName, whenCreated, PasswordLastSet  | Select CanonicalName, Enabled, GivenName, Surname, Name, UserPrincipalName, samAccountName, whenCreated, PasswordLastSet

Редактирование атрибутов Active Directory в Центр администрирования Active Directory

Третий метод просмотра атрибутов у объектов AD, заключается в использовании оснастки «Центр администрирования Active Directory» (Active Directory Administrative Center). Открываем его через пуск или набрав команду в окне «Выполнить» dsac.exe.

Если кто-то не в курсе, то Центр администрирования Active Directory — это оснастка построенная на оболочке power shell, все что вы тут выполняете, делается в фоновом режиме именно этим языком, плюс вы всегда на выходе графических манипуляций, получите полную команду, как это делалось бы в power shell. Переходим в нужное расположение объекта.

Открываем его свойства, переходим на вкладку «Расширения» и перед вами будет, знакомый редактор атрибутов AD. Вот так вот его запрятали. Хочу отметить, что начиная с Windows Server 2012 R2, компания Microsoft старается продвигать все работы с объектами Active Directory именно в этой утилите и оснастке power shell и это понятно, у последнего возможностей в разы больше, чем у GUI собратьев. Поэтому, кто еще пока с ним не знаком, будет очень полезно начать именно с оснастки «Центр администрирования Active Directory», которая имеет подсказки, как все сделать через оболочку power shell.

Get-AdUser Password Last Set Older than X Days

If you want to get list of adusers password last set older than specified days, run the below command,

Get-ADUser -Filter 'Enabled -eq $True' -Properties PasswordLastSet | Where-Object {$_.PasswordLastSet -lt (Get-Date).adddays(-90)} | select Name,SamAccountName,PasswordLastSet

In the above PowerShell script, Get-AdUser cmdlet get list of ad user which are active in active directory using Property. Enabled property used to get aduser is active or disabled in active directory.

Second command use Where-Object to check attribute less than 90 days and pass output to the third command.

Third command select name, samaccountname, and passwordlastset properties to console.

The output of the above PowerShell script to get aduser password last set older than 90 days are as below

Получение событий

Учитывая, что включенная политика касается не только паролей, можно настроить фильтр через Powershell или GUI. Мы настроим фильтры, которые будут выводить события связанные с определенными идентификаторами ‘Event ID’. Нас интересуют следующие идентификаторы:

  • 4723 — попытка смены пароля;
  • 4724 — попытка сброса пароля;
  • 4740 — пользователь был заблокирован;
  • 4767 — пользователь был разблокирован.

Фильтрация логов с Event Viewer

Что бы выполнить фильтрацию через GUI — откройте логи ‘Security’ в ‘Event Viewer’ на домен-контроллере. Открыв журнал вы увидите множество событий не касающихся паролей:

Эти фильтры мы можем применить зайдя в соответствующее меню:

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

После этих установок у нас будут отображаться только нужные события.

Фильтрация логов с Powershell

В Powershell есть две команды для работы с логами:

  • Get-WinEvent — получает логи из всех журналов;
  • Get-Eventlog — получает логи из журналов Application, System, or Security. Является устаревшим командлетом.

Обе команды имеют параметр ‘ComputerName’, с помощью которого можно подключаться удаленно.

У получения логов средствами Powershell есть две проблемы:

  1. Процесс получения логов медленный. Выполнение одного запроса может выполняться больше 1 секунды;
  2. Если брать другие команды Powershell, то их вывод всегда структурирован в виде ‘Ключ’=’Значение’. При получении логов журнала, так же как в EventViewer, часть информации будет представлена как строка, т.е ‘Ключ’= ‘Ключ=Значение Ключ=Значение’. В разных случаях может придется использовать регулярные выражения и парсить значения.

Что бы максимально ускорить процесс получения логов можно использовать 3 параметра фильтрации: FilterXPath, FilterHashtable, FilterXml.

XPath — это язык запросов, который был создан для работы с XML. Мы можем не создавать свой запрос XPath, а увидеть уже составленный на созданном раннее фильтре, на вкладке XML:

Команда, которая получит подобные логи с домен-контроллера ‘AD1’ и используя запрос XPath, будет выглядеть следующим образом:

Аналогичное можно сделать использовав HashTable. Мы не должны указывать тип логов, т.к. это сделано в массиве:

Если вам больше нравится вариант с запросом через hashtable, но вы не понимаете как правильно его составить, можно использовать следующий подход. Мы должны найти хоть один лог, который нам нужен используя любые средства Powerhsell. Затем мы выводим все свойства через ‘SELECT *’ и заполняем ими нашу таблицу:

Отличия между массивом hashtable и обычными средствами Powershell в скорости. Если вы будете фильтровать вывод используя Powerhsell (как в примере выше) — это будет медленнее. Кроме указанных параметров в документации можно найти дополнительные варианты.

Get AdUser Manager SamAccountName

You can get aduser manager samaccountname using the Get-AdUser cmdlet. Ad user has manager attribute which contains manager distinguished name.

To get aduser manager samaccountname for the user, run the below script

$user = "garyw"
$Manager = get-aduser $user -properties * | Select -ExpandProperty Manager

get-aduser $Manager -properties * | Select SamAccountName,DisplayName

In the above PowerShell script to get aduser garyw manager samaccountname,

variable stores user name.

The second command uses the Get-AdUser command to get aduser all properties and select manager and stored them in variable.

The third command again uses the Get-AdUser cmdlet to get aduser manager samaccountname and manager display name.

Создание пользователей AD из CSV в Powershell New-ADUser

Я создал в Excel такой файл и сохранил как CSV:

Для того что бы импортировать файл есть командлет Import-Csv

Нужно обратить внимание какой разделитель (делимитер) в файле и у вас в системе. Увидеть это можно так:

Если есть отличия, то тогда в команде импорта нужно добавить ключ ‘-Delimiter’ и указать тот, который в файле. Отличия будут, например, если файл был создан в русской локализации, а импорт идет на сервере с английской.

Импорт и создание пользователей делается так:

Сложение в Path сделано для демонстрации такой возможности и не является обязательным.

У меня так же была ошибка:

  • new-aduser указанное имя не является корректным именем пользователя
  • New-ADUser : The object name has bad syntax
  • New-ADUser : Directory object not found

Причины возникновения не совсем ясны. Хоть ошибка и указывала на начало командлета New-AdUser, но проблема была в Path. Из рекомендаций были убрать в CSV файле пустые строки, проверить, что у нас нет путаницы с кавычками ( что мы не используем » ‘ в одном объекте), а так же вынести значение Path вне цикла в переменную. Мне помогло, как я понял, замена кавычек в ключе, экранирование скобками и удаление пробелов в этом ключе.

Само собой мы можем в Csv файле создать больше колонок. Например мы можем там создать и пароль, что бы у всех пользователей он был разный, но нужно будет обязательно сконвертировать его через ConvertTo-SecureString.

Если вы не уверены в том, что все данные корректны, то можете добавить ключ -WhatIf, который покажет результаты выполнения команды, но не выполнит ее физически.

Рекомендую

Powershell атрибуты пользователя. Поиск и изменение.

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

Поиск пользователей по заданным критериям. Доменные пользователи.

Для поиска доменных пользователей используется командлет Get-ADUser. Данный командлет входит в модуль ActiveDirectory. Он доступен на серверах с установленной ролью AD DS или при установке оснастки RSAT для удаленного администрирования серверов. Модуль, также, может быть установлен и отдельно из репозитория Powershell.

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

В данном примере производится поиск пользователя с именем, заданным в переменной $Name. Вы можете указать имя пользователя явно, только лучше использовать оператор -like

Учтите, что под именем здесь имеется ввиду полное имя пользователя.

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

Давайте посмотрим вывод команды:

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

Для того, чтобы изменить атрибуты пользователя используется командлет Set-ADUser.

Например, чтобы изменить название улицы, указанное в свойствах пользователя Семенов, можно сразу передать результат выполнения команды Get-ADUser командлету Set-ADUser:

В результате выполнения, получим желаемый результат в свойствах пользователя:

Powershell атрибуты пользователя. Локальные пользователи.

Для работы с учетными записями локальных пользователей используется модуль Local Accounts, доступный в репозитории Powershell Gallery(как установить модули описано здесь).

Найти пользователя можно с помощью командлета Get-LocalUser.

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

Для получения информации по конкретному пользователю, нужно указать его параметры. Чтобы посмотреть доступные параметры используем командлет Get-Member:

Как можно видеть, параметров у пользователя намного меньше.

И еще, здесь есть отличие от Get-ADUser, параметр Name, который в Get-ADUser обозначал полное имя пользователя, в Get-LocalUser означает логин пользователя. Убедиться в этом можно на примере конкретного пользователя. Чтобы найти пользователя по атрибуту, отличному от его логина(Name) и SID, нужно задействовать командлет Where-Object:

Изменение атрибутов производится командлетом Set-LocalUser. Например, для изменения срока действия учетной записи с 31.08.2019 на 31.12.2020 команда выглядит так:

Аналогично меняются и другие атрибуты(Description, Fullname и т.д.)

И еще одно замечание. Если доменного пользователя заставить сменить пароль перед первым входом мы можем просто с помощью параметра -ChangePasswordAtLogon, то с локальными пользователями все не так. Вариант, все же есть, и он описан в этой статье.

Данные командлеты(особенно при использовании в скриптах) очень облегчат жизнь системному администратору, если приходится часто или в большом количестве менять атрибуты пользователей. Вы можете создать(получить) список пользователей и атрибуты, которые нужно изменить и «скормив» его скрипту, быстро получить требуемый результат.

Вот такая коротенькая памятка по поиску и изменению атрибутов пользователей получилась.

Еще статьи по использованию Powershell в администрировании можно посмотреть по тегу Powershell.

Поиск пользователей по заданным критериям. Доменные пользователи.

Для поиска доменных пользователей используется командлет Get-ADUser. Данный командлет входит в модуль ActiveDirectory. Он доступен на серверах с установленной ролью AD DS или при установке оснастки RSAT для удаленного администрирования серверов. Модуль, также, может быть установлен и отдельно из репозитория Powershell.

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

PowerShell

Get-ADUser -Filter {Name -eq $Name} -Properties *

1 Get-ADUser-Filter{Name-eq$Name}-Properties*

 В данном примере производится поиск пользователя с именем, заданным в переменной $Name. Вы можете указать имя пользователя явно, только лучше использовать оператор -like

PowerShell

Get-ADUser  -Filter {Name -like «Семенов*»} -Properties *

1 Get-ADUser -Filter{Name-like»Семенов*»}-Properties*

Учтите, что под именем здесь имеется ввиду полное имя пользователя.

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

PowerShell

Get-ADUser -Server DC01 -Credential $domaincredential -Filter {Name -like «Семенов*»} -Properties *

1 Get-ADUser-ServerDC01-Credential$domaincredential-Filter{Name-like»Семенов*»}-Properties*

Давайте посмотрим вывод команды:

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

Для того, чтобы изменить атрибуты пользователя используется командлет Set-ADUser.  

Например, чтобы изменить название улицы, указанное в свойствах пользователя Семенов, можно сразу передать результат выполнения команды Get-ADUser командлету Set-ADUser:

PowerShell

Get-ADUser -Server DC01 -Credential $domaincredential -Filter {Name -like «Семенов*»} -Properties * | Set-ADUser -StreetAddress «ул.Мира»

1 Get-ADUser-ServerDC01-Credential$domaincredential-Filter{Name-like»Семенов*»}-Properties*|Set-ADUser-StreetAddress»ул.Мира»

В результате выполнения, получим желаемый результат в свойствах пользователя:

Подробнее о модуле Active Directory можно прочитать здесь: https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/ee617195(v=technet.10)

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: