How to Show User’s Logged on Computer Name in ADUC?
In one of the previous articles we showed how to add user information to computer properties in AD using the Set-ADComputer cmdlet. Now let’s consider another approach and try to add information about a computer a user is logged on to the user properties in Active Directory.
To do it, it is enough to add the following PowerShell script to the logon GPO scripts to be run when a user logs on to the computer (User Configuration -> Policies -> Windows Settings -> Scripts -> Logon):
The script assumes that the PowerShell module for Active Directory is installed on users’ computers. If you don’t want to install RSAT on all computers, you can use the AD PowerShell module without installation by copying its files to all computers using GPO or a logon script.
This will allow you quickly find the name of the computer the user is logged on.
In this example, we save the name of the current computer to the standard Description attribute. You can use another attribute, say one of ExtensionAttributes.
Создание пользователей c помощью VBScript
VBScript является одним из самых мощных инструментов, предназначенных для автоматизации административных задач. Данный инструмент позволяет создавать сценарии, предназначенные для автоматизирования большинства действий, которые могут выполняться посредством пользовательского интерфейса. Сценарии VBScript представляют собой текстовые файлы, которые обычно пользователи могут редактировать при помощи обыкновенных текстовых редакторов (например, Блокнот). А для выполнения сценариев нужно просто дважды щелкнуть мышью по значку самого сценария, который откроется с применением команды Wscript. Для того чтобы создать пользовательскую учетную запись в VBScript не существует определенной команды, поэтому вам сначала нужно подключиться к контейнеру, затем использовать библиотеку адаптеров Active Directory Services Interface (ADSI) при помощи инструкции Get-Object, где выполняется строка запроса LDAP, предоставляющая собой моникер протокола LDAP:// с DN именем объекта. Например, Set objOU=GetObject(“LDAP://OU=Маркетинг,OU=Пользователи,dc=testdomain,dc=com”). Вторая строка кода активирует метод Create подразделения для создания объекта конкретного класса с конкретным отличительным именем, например, Set objUser=objOU.Create(“user”,”CN= Юрий Соловьев”). В качестве третьей строки указывается метод Put, где нужно указать наименование атрибута и его значение. Последняя строка данного сценария подтверждает сделанные изменения, то есть objUser.SetInfo().
Пример использования:
Set objOU=GetObject(“LDAP://OU=Маркетинг,OU=Пользователи,dc=testdomain,dc=com” Set objUser=objOU.Create(“user”,”CN= Юрий Соловьев”) objUser.Put “sAMAccountName”,”Yuriy.Soloviev” objUser.Put “UserPrincipalName” ” objUser.Put “givenName”,”Юрий” objUser.Put “sn”Соловьев” objUser.SetInfo()
Как настроить репликацию MS SQL Server
Мы обсудим основной тип репликации в MS SQL Server и способы его настройки. «Репликация моментальных снимков» — это простейшая форма репликации. Он включает в себя создание моментального снимка базы данных в определенный момент времени и копирование его подписчику.
Выполните следующие действия, чтобы настроить репликацию MS SQL Server:
Настройка распространителя
Во-первых, мы должны настроить Распределитель. Откройте «Обозреватель объектов» и перейдите в папку «Репликация». Щелкните папку правой кнопкой мыши и выберите «Настроить распространение».
Выберите настройку текущего экземпляра в качестве распространителя или выберите существующий настроенный экземпляр распространителя.
Выберите первый переключатель, чтобы настроить «Службу агента сервера».
Выберите новый путь для папки моментальных снимков репликации SQL в следующем окне или введите собственный путь.
В следующем окне выберите издателя, использующего базу данных распространителя. Затем нажмите «Далее».
Выберите «Настроить раздачу».
Просмотрите параметры конфигурации дистрибутива. Затем нажмите «Готово».
Создайте базу данных и таблицу, которые мы можем использовать для настройки репликации моментальных снимков.
СОЗДАТЬ БАЗЫ ДАННЫХ школы;
ИДТИ
ЕГЭ школа;
ИДТИ
СОЗДАТЬ ТАБЛИЦУ сотрудников ( EMP_ID INT, ИМЯ ВАРЧАР(50), JOB_LOCATION VARCHAR(50), ЗАРПЛАТА ДЕСЯТИЧНАЯ(10,2));
ИДТИ
ВСТАВИТЬ В сотрудников (EMP_ID, ИМЯ, РАБОТА_МЕСТО, ЗАРПЛАТА)
ЦЕННОСТИ (1, ‘Папан’, ‘Нью-Дели’, 70000.00),(2, ‘Неха’, Хайдарабад, 60000.00),(3, ‘Адиль’, ‘Ченнаи’, 55000.00),(4, ‘Арнита’, ‘Мумбаи’, 65000.00);
ИДТИ
ВЫБИРАТЬ * ОТ сотрудников;
Выход:
Настройте издателя
Теперь нам нужно настроить Издатель. Для начала разверните папку «Репликация» в проводнике объектов и перейдите в «Локальные публикации» -> «Новая публикация».
После этого появится новое окно, в котором отображаются различные типы публикаций. Выберите «Публикация снимков» и нажмите «Далее».
Выберите таблицу, которая будет включена в публикацию. Затем нажмите «Далее».
Чтобы активировать его, установите флажок «Создать снимок немедленно». Затем нажмите «Далее».
В окне «Безопасность агента» вам необходимо настроить учетную запись службы, под которой будет работать агент моментальных снимков. Просто нажмите кнопку «Настройки безопасности…» и введите имя пользователя и пароль для учетной записи службы. Затем нажмите «ОК».
Выберите «Создать публикацию». Затем нажмите «Далее».
Настройка подписчика
Теперь нам нужно настроить Подписчик. Чтобы продолжить, щелкните правой кнопкой мыши свою публикацию в проводнике объектов и выберите «Новый подписчик». Выберите публикацию и нажмите «Далее».
В следующем окне выберите первый вариант для запуска всех агентов.
В следующем окне выберите базу данных на сервере подписчика (SQL1).
В следующем окне введите данные подключения агента распространителя. Нажмите на «(…)» и введите необходимые данные.
Выберите «Выполнять непрерывно» для расписания синхронизации.
Инициализируйте базу данных подписки, используя моментальный снимок публикации. Затем нажмите «Далее».
Установите флажок «Создать подписку». Затем нажмите «Далее».
Просмотрите параметры конфигурации. Затем нажмите «Готово».
Следуя этим шагам, вы можете настроить репликацию моментальных снимков в MS SQL Server и реплицировать свои данные одному или нескольким подписчикам. Этот тип репликации удобен, когда вам нужно сделать копию базы данных в определенный момент времени и раздать подписчикам.
Using the Set-ADUser cmdlet
With the Set-ADUser cmdlet, we can modify all properties of an Active Directory user. To do this we can use one of the parameters of the cmdlet or use Add, Update, Replace parameter. All parameters of Set-ADUser are listed .
Let’s say we want to change the job title of our user Alan Rhodes. His current job title is employee, and we are going to change this to floor manager.
Set-ADUser -Identity arhodes -Title "Floor manager"
We select the user based on the userprincipalname (identity) and set the title to Floor manager. As you can see in the screenshot below, the the cmdlet doesn’t give any output.
But we can simply check the results in PowerShell with
Set-ADUser cmdlet
Set Multiple Attributes
We can also change or set multiple attributes at once. Let’s say we also want to update Alan’s phone number, office, and department attributes.
Set-ADUser -Identity arhodes -OfficePhone "(012)-157-8923" -Office "A3.20" -Department Operations
Clear AD User Attributes
Sometimes you need to remove or clear an attribute. To do this you will need to use the clear parameter, this will remove the content of all select fields. If we want to remove the mobile phone we can do the following:
Set-ADUser -identity arhodes -Clear mobile
Or to clear multiple AD attributes you can use
Set-ADUser -identity arhodes -Clear mobile,title,department
Add and Remove Attributes with Set-ADUser
Some attributes can contain multiple values, like ProxyAddress or otherTelephone for example. To set or update values in these attributes we can use the Add and Remove parameter in Set-ADUser.
You can set multiple values by using a comma-separated list:
Set-ADUser -Identity arhodes -Add @{proxyAddresses="",""}
To remove a single value from the list we can simply specify which value we want to remove:
Set-ADUser -Identity arhodes -Remove @{proxyAddresses=""}
Active Directory Disable Account with Set-ADuser
We can also use the Set-ADuser cmdlet to enable or disable an account in the Active Directory. The parameter is a boolean type, so we can set it to true or false.
To disable a user in your Active Directory you can use the following command:
# Disable a user Set-ADUser -identity cparker -Enabled:$false # Enable a user Set-ADUser -identity cparker -Enabled:$false
Инструменты управления Active Directory
Управлять сервером Windows можно как непосредственно сидя за перед ним, так и удалённо. Удалённо сервером можно управлять как с другого сервера, так и с помощью рабочих станций, но для того, чтобы рабочие станции могли использоваться для управления сервером, могут потребоваться дополнительные действия по установке компонентов.
Управление сервером осуществляется через:
- Оснастки в Microsoft Management Console (MMC) (Консоли управления Microsoft). На сервере эти инструменты доступны по умолчанию, а на рабочих станциях для получения этой оснастки необходимо предварительно установить средства удалённого администрирования. Сами оснастки перечислены чуть ниже.
- Active Directory Administrative Center (Центр администрирования Active Directory), dsac.exe, как показано на скриншоте ниже, является универсальным местом, которое используется для управления службами каталогов Windows Server.
- Windows Admin Center. Как на сервере, так и на рабочих станциях необходимо установить сам Windows Admin Center, а затем плагин для Active Directory.
- Active Directory Module for Windows PowerShell (Модуль Active Directory для Windows PowerShell). На серверах Windows данный модуль устанавливается автоматически во время развёртывания Active Directory Domain Services. На рабочих станциях Windows требуется его отдельная установка.
Имеются следующие оснастки в Microsoft Management Console (MMC) (консоли управления Microsoft), mmc.exe:
- Active Directory Users and Computers (Пользователи и компьютеры Active Directory), dsa.msc, используется для управления пользователями, компьютерами, группами, организационными единицами и другими объектами Active Directory.
- Active Directory Domains and Trusts (Домены и доверие Active Directory), domain.msc, используется для управления доменами, доверительными отношениями между доменами.
- Active Directory Sites and Services (Сайты и службы Active Directory), dssite.msc, используются для управления репликацией и службами между сайтами.
Всего будет рассмотрено четыре набора инструментов для управления Active Directory. Может показаться, что столько вариантов это избыточно. Особенно если учесть, что Центр администрирования Active Directory и Windows Admin Center это просто графические обёртки для PowerShell, который также доступен в виде Модуля Active Directory для Windows PowerShell. Тем не менее, разница между ними заключается не только в интерфейсе инструментов, между ними есть более значимая практическая разница.
Инструмент | Позволяет управлять с компьютера, не являющегося частью домена | Подходит для локальной настройки Windows Server Core |
---|---|---|
Оснастки в Microsoft Management Console (MMC) | Нет | Нет |
Active Directory Administrative Center | Нет | Нет |
Windows Admin Center | Да | Нет |
Active Directory Module for Windows PowerShell | Да | Да |
Одинаковые характеристики в таблице имеют только два инструмента, но они различаются интерфейсом.
Получение пользователей группы AD из PowerShell
get-module -ListAvailable
И если вы не видите модуля ActiveDirectory, то его придется установить:
Import-Module ServerManagerAdd-WindowsFeature RSAT-AD-PowerShellПосле это го в список модулей должен выглядеть как то так:PS C:\Windows\system32> get-module -ListAvailable
ModuleType Name ExportedCommands ———- —- —————- Manifest ActiveDirectory {} Manifest ADRMS {}
Вот, собственно после этого и начинается написание скрипта:
Import-Module ActiveDirectory#получить информацию о доменеGet-ADDomain#получаем информацию о группе$group = Get-AdGroup <имя группы без кавычек, например: Administrators>#получаем пользователей из выбранной группыGet-ADUser -Filter {MemberOf -recursivematch $group.DistinguishedName}
Согласитесь достаточно просто? Причем, я не являюсь администратором домена, на доступном мне сервере нет контроллера домена, но все работает.Кстати, никто нам не мешает, посмотреть по пользователю любые свойства доступные в AD. Например:Get-ADUser -Filter {Surname -eq ‘Лосев’} -properties * | Select CN, Created
CN Created — ——- Лосев Алексей Юрьевич 08.08.2011 14:55:04Как то вот так.
Modifying User Properties in Active Directory with PowerShell
The name of a user you want to change AD attributes for is specified in the mandatory Identity option (you can specify it as an sAMAccountName, SID, Distinguished Name or objectGUID).
For example, let’s get the value of the Title attribute of a user using the Get-ADUser cmdlet:
Then change its job title in AD:
The following command will disable a user account in the domain:
You can change a user photo in AD:
You can edit values of other user attributes (including extensionAttribute and custom attributes) in AD using these Set-ADUser options:
- Add – adds an attribute value
- Replace – replaces an attribute value
- Clear – clears an attribute value
- Remove — removes one of the attribute values
For example, to change a user phone number, you may use this command:
Or:
To add a new value to the extensionAttribute5:
To clear an attribute value:
You can change values of multiple attributes at a time:
Get-ADUser: разные примеры использования
Далее приведем еще несколько полезных вариантов запросов о пользователях Active Directory с помощью различных фильтров. Вы можете их комбинировать для получения необходимого списка пользователей домена:
Вывод пользователей AD, имя которых начинается с Roman:
Чтобы подсчитать общее количество всех аккаунтов в Active Directory:
Список всех активных (не заблокированных) учетных записей в AD:
Get-ADUser -Filter | Select-Object SamAccountName,Name,Surname,GivenName | Format-Table
get-aduser -Filter * -Properties Name, WhenCreated | Select name, whenCreated
Вывести всех пользователей, которые были созданы за последние 24 часа (пример отсюда):
$lastday = ((Get-Date).AddDays(-1))Get-ADUser -filter
Список учетных записей с истекшим сроком действия пароля (срок действия пароля настраивается в доменной политике):
Get-ADUser -filter -properties name,passwordExpired | where |select name,passwordexpired
Задача: для списка учетных записей, которые хранятся в текстовом файле (по одной учетной записи в строке), нужно получить телефон пользователя из AD и выгрузить информацию в текстовый csv файл (для дальнейшего формирования отчета в Exсel).
Import-Csv c:psusernsme_list.csv | ForEach Get-ADUser -identity $_.user -Properties Name, telephoneNumber |Select Name, telephoneNumber |Export-CSV c:psexport_ad_list.csv -Append -Encoding UTF8>
Пользователи, которые не меняли свой пароль в течении последних 90 дней:
$90_Days = (Get-Date).adddays(-90)Get-ADUser -filter
$user = Get-ADUser winadmin -Properties thumbnailPhoto$user.thumbnailPhoto | Set-Content winadmin.jpg -Encoding byte
Список групп, в которых состоит учетная запись пользователя
Get-AdUser winadmin -Properties memberof | Select memberof -expandproperty memberof
Вывести список пользователей из OU, которые состоят в определенной группе безопасности:
Get-ADUser -SearchBase ‘OU=Moscow,DC=winitpro,DC=loc’ -Filter * -properties memberof | Where-Object
Вывести список компьютеров домена, на которые разрешено входить пользователю (ограничение через атрибут LogonWorkstations):
Get-ADUser AIvanov -Properties LogonWorkstations | Format-List Name, LogonWorkstations
Get-ADGroupMember – вывести список пользователей группы AD
Вывести на экран список пользователей группы:
Get-ADGroupMember «TestADGroup»
Чтобы оставить в результатах только имена пользователей, выполните:
Get-ADGroupMember «TestADGroup»| ft name
Если в данную группу включены другие группы домена, чтобы вывести полный список членов, в том числе всех вложенных групп, воспользуйтесь параметром Recursive
.
Get-ADGroupMember ‘server-admins» -recursive| ft name
Чтобы выгрузить список учетных записей, состоящих в определённой группе в CSV файл (для дальнейшего использования в Excel), выполните такую команду:
Get-ADGroupMember ‘server-admins» -recursive| ft samaccountname| Out-File c:\ps\admins.csv
Чтобы добавить в текстовый файл данные учетных записей пользователей в AD, воспользуемся командлетом . Например, помимо учетной записи нужно вывести должность и телефон пользователя группы:
Get-ADGroupMember -Identity ’server-admins’ -recursive| foreach { Get-ADUser $_ -properties title, OfficePhone|Select-Object title, OfficePhone }
(Get-ADGroupMember -Identity «domain admins»).Count
Оказалось, что в группе «domain admins» у нас состоит 7 учетных записей администраторов.
Чтобы найти список пустых групп в определенном OU, воспользуйтесь такой командой:
Get-ADGroup -Filter * -Properties Members -searchbase “OU=Moscow,DC=corp,dc=winitpro,DC=ru” | where {-not $_.members} | select Name
Сегодня мы попробуем выгрузить список все пользователей в отдельный файл из Active Directory. Главным помощником в этом деле у нас будет PowerShell. Всё дело в том, что Microsoft изначально планировала командную консоль PowerShell как основной инструмент для управления серверными компонентами Windows. И на сегодняшний день, когда мы имеем уже версию 2.0, по большому счету, это так и есть.
Ещё в недалеком прошлом, чтобы хоть как-то взаимодействовать с AD, администраторам необходимо было иметь в своем распоряжении либо утилиту dsquery, либо разного рода скрипты или утилиты. Сегодня же начиная с версии Windows Server 2008 R2, мы можем работать с AD через PowerShell. С приходом PowerShell 2.0 для взаимодействия с Active Directory используется специальный модуль Active Directory Module for Windows PowerShell
, который содержит в себе необходимый список командлетов. Для наших задач мы будем использовать команду Get-ADUser
.
Итак, в зависимости под управлением какой операционной системы мы будем запускать консоль PowerShell, нам необходимо будет выполнить “подготовительные действия”.
1)
Если мы работаем из-под Windows Server до версии 2012
, то нам необходимо выполнить команду:
Import-Module activedirectory
– команда для импортирования модуля в AD
Для версий операционной системы от 2012 и выше, данный модуль уже включен по умолчанию.
2)
Если мы работаем из под любой клиентской Windows, то на ней должен быть установлен пакет удаленного администрирования RSAT, с проинсталлированным компонентом Active Directory Module for Windows PowerShell.
Стоит отметить, что командлет Get-ADUser рекомендуется выполнять при количестве выгружаемых данных до 1000 пользователей.
Политика оповещения об окончании срока действия пароля
В Windows есть отдельный параметр групповой политики, позволяющий оповещать пользователей о необходимости сменить пароль.
Политика называется Interactive logon: Prompt user to change password before expiration и находится в разделе GPO Computer Configuration -> Policies -> Windows Settings -> Security Settings -> Local Policies -> Security Options.
По умолчанию эту политика включена на уровне локальных настроек Windows и уведомления начинают появляться за 5 дней до истечения срока действия пароля. Вы можете изменить количество дней, в течении которых должно появляться уведомление о смене пароля.
После включения этой политики, если пароль пользователя истекает, то при входе в систему в трее будет появляться уведомление о необходимости сменить пароль.
Также вы можете использовать простой PowerShel скрипт, который автоматически вызывает диалоговое окно со предложением сменить пароль, если он истекает менее чем через 5 дней:
Если пользователь нажимает ДА, появляется диалоговое окно Windows Security, которое вы видите при нажатии Ctrl+Alt+Del или Ctrl+Alt+End (при RDP подключении).
Данный скрипт предполагает, что на компьютерах пользователей установлен модуль AD для PowerShell. Его можно использовать даже без установки RSAT . См. статью Использование модуля Active Directory PowerShell без установки RSAT.
Данный скрипт нужно поместить в автозагрузку или запускать как logon скрипт групповых политик.