Как узнать, кто и когда создал пользователя в active directory?

Восстановление доверительных отношений между рабочей станцией и доменом ad

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

Учитывая, что включенная политика касается не только паролей, можно настроить фильтр через 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 (как в примере выше) — это будет медленнее. Кроме указанных параметров в документации можно найти дополнительные варианты.

Разовое удаление пользователей AD или массовое

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

Как это работает

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

Вероятный результат

Если вы все сделаете правильно, то удаленные пользователи не будут видны в dsa.msc.

Delete-user-account Powershell Scripts

Delete Active Directory User.txt

#Wintel-AD-Disable Active Directory User:

#for single:
Import-Module ActiveDirectory
Remove-ADAccount -Identity user1

###################for bulk################################

#imports active directory module to only corrent session as it is related to AD

Import-Module ActiveDirectory

#Takes input from users.csv file into this script

Import-Csv "C:\Users.csv" | ForEach-Object {

#assign input value to variable-samAccountName 

$samAccountName = $_."samAccountName"

#get-aduser will retrieve samAccountName from domain users. if we found it will disable else it will go to catch

try { Get-ADUser -Identity $samAccountName |
Remove-ADAccount  
}

#It will run when we can't find user

catch {

#it will display the message

  Write-Host "user:"$samAccountname "is not present in AD"
}
}

users.csv

samAccountName
akhila
user1

readme.txt

This script will disable particularly given user accounts in AD.

Prerequisites:

1.We should provide the user accounts which are in AD.

Steps to run the script:

1.Provide user names in csv file to script.
2.It will check for user in AD.
3.if it is there, it will disable else it will provide a message like user is not present in AD.

Как расследовать причину блокировки

Открываем журнал событий и идем в журнал безопасность (Security)» именно в нем собираются EventID которые могут помочь определить причину блокировки. Там очень много событий, так что отфильтруем их с помощью «Filter Current Log (Фильтр текущего журнала)», она позволит нам выбрать только те события, которые нам нужны. В поле Logged указываем за какой срок нужны данные, в поле Event ID указываем 4740 и нажимаем «Ок»

В отфильтрованных записях с помощью поиска (Find) находим имя интересующей нас учетной записи. В итоге должны отфильтроваться события по указанному логину с кодом 4740 в котором можно найти причину блокировки, например в поле Caller Computer Name будет указано имя компьютера с которого идут феилд логоны и который этим вызывает блокировку. Затем нужно перейти на этот компьютер и смотреть евент логи там, чтобы определить почему данная машина пытается залогиниться под некорректными кредами.

В событиях 4740 можно встреть еще такие причины блокировки как имя сервера, где происходит блокирование Exchange сервер организации – это значит, что проблема в Outlook, почтовом мобильном клиенте или его календарем. Чтобы расследовать данную блокировку нужно смотреть логи IIS на Exchange сервере. Так же можно использовать команду Get-ActiveSyncDeviceStatistics в PowerShell, чтобы увидеть проблемные мобильные устройства.

Как узнать срок действия пароля пользователя в Active Directory?

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

Необходимые данные присутствуют в значениях:

  • Password last set — 1/21/2020 11:18:37 AM
  • Password expires — 3/21/2020 11:18:37 AM
  • Password changeable — 1/22/2020 11:18:37 AM

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

Для получения параметров учетных записей в AD мы будем использовать специальный модуль PowerShell для Active Directory, который позволяет получить значения различных атрибутов объектов AD (см. как установить и импортировать модуль AD PowerShell в Windows 10 и Windows Server 2012 R2/2016).

С помощью командлета Get-AdUser можно получить время последней смены пароля пользователя и проверить, установлена ли опция бессрочного пароля (PasswordNeverExpires):

  • PasswordLastSet — время последней смены пароля пользователя;
  • PasswordNeverExpires – возвращает значение True, если пароль пользователя никогда не устаревает;
  • PasswordExpired – если пароль пользователя устарел — возвращает True, если пароль не устарел – False;

Можно проверить время последней смены пароля из графической оснастки Active Directory Users & Computers (dsa.msc). Для этого откройте свойства пользователя, перейдите на вкладку Редактор атрибутов, проверьте значение атрибута pwdLastSet.

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

Чтобы получить не время последней смены пароля, а дату окончания его срока действия, нужно использовать специальный constructed-атрибут msDS-UserPasswordExpiryTimeComputed. Значение атрибута msDS-UserPasswordExpiryTimeComputed автоматически вычисляется на основании времени последней смены пароля и парольной политики домена

Параметр UserPasswordExpiryTimeComputed возвращает время в формате TimeStamp и для преобразования его в человеко-понятный вид я использую функцию FromFileTime:

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

Если значение msDS-UserPasswordExpiryTimeComputed равно 0, значит pwdLastSet пустой (null) или равен 0 (пароль пользователя никогда не менялся).

Чтобы получить срок действия паролей для всех пользователей их определенного контейнера (OU) AD, можно воспользоваться таким скриптом PowerShell:

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

Можно вывести только список пользователей, чей пароль уже истек:

Как отследить, какой процесс блокирует учётную запись домена

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

Часто пользователи начинают жаловаться на блокировку своих учётных записей домена после изменения паролей. Это говорит о том, что старый (неправильный) пароль сохраняется в определённой программе, скрипте или службе, которая периодически пытается аутентифицироваться на контроллере домена с неверным паролем. Рассмотрим наиболее распространённые места, в которых пользователь мог сохранить старый пароль:

  • Подключённые сетевые диски (через net use);
  • Работы Windows Task Scheduler (Планировщика заданий Windows);
  • Службы Windows, настроенные для запуска из учётной записи домена;
  • Сохранённые учётные данные в Credential Manager (Диспетчере учётных данных) (в Панели управления);
  • Браузеры;
  • Мобильные устройства (например, те, которые используются для доступа к корпоративному почтовому ящику);
  • Программы с автоматическим входом или настроенная функция автоматического входа в Windows;
  • Отключённые/незанятые сеансы RDP на других компьютерах или серверах RDS (поэтому рекомендуется установить ограничения для сеансов RDP);

Подсказка: существует ряд сторонних инструментов (в основном коммерческих), которые позволяют администратору проверять удалённый компьютер и определять источник блокировки учётной записи. В качестве достаточно популярного решения отметим Lockout Examiner от Netwrix.

Чтобы выполнить подробный аудит блокировки учётной записи на найденном компьютере, необходимо включить ряд локальных политик аудита Windows. Для этого откройте локальный редактор групповой политики (gpedit.msc) на компьютере (на котором вы хотите отслеживать источник блокировки) и включите следующие политики в разделе Computer Configurations → Windows Settings → Security Settings → Local Policies → Audit Policy:

  • Audit process tracking: Success , Failure
  • Audit logon events: Success , Failure

В русскоязычной версии это соответственно: Конфигурации компьютера → Конфигурация Windows → Параметры безопасности → Локальные политики → Политика аудита:

  • Аудит отслеживания событий: Успех, Отказ
  • Аудит событий входа в систему: Успех, Отказ

Дождитесь следующей блокировки учётной записи и найдите события с идентификатором события 4625 в журнале безопасности. В нашем случае это событие выглядит так:

An account failed to log on.
Failure Reason: Account locked out.

На русском это:

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

Как видно из описания события, источником блокировки учётной записи является процесс mssdmn.exe (компонент Sharepoint). В этом случае пользователю необходимо обновить пароль на веб-портале Sharepoint.

После завершения анализа и выявления и устранения причины блокировки не забудьте отключить локальные политики аудита.

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

Вы также можете вывести список событий с кодом 4625 в PowerShell:

Get-WinEvent -FilterHashtable @{ LogName='Security'; Id='4625'; }

Следующую команду вы можете использовать для вывода событий блокировки для конкретного пользователя (впишите его вместо MiAl):

Get-WinEvent -FilterHashtable @{ LogName='Security'; Id='4625'; Data="MiAl" }

Следующая команда выведет подробную информацию о каждом событии блокировки для указанного пользователя (в том числе процесс, вызвавший блокировку):

Get-WinEvent -FilterHashtable @{ LogName='Security'; Id='4625'; Data="MiAl" } | Format-List

Эта команда аналогична предыдущей, но покажет события только за последние 2 дня:

$Date = (Get-Date).AddDays(-2); Get-WinEvent -FilterHashtable @{ LogName='Security'; Id='4625'; Data="MiAl"; StartTime=$Date; } | Format-List

Удаление объектов AD

Объектом AD может быть компьютер или пользователь, и этот скрипт предоставляет вам возможность удалить пользователя и его машину из окружения. Больше не нужно идти и удалять пользователя/компьютер из GUI.

Как это работает

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

Вероятный результат

Пользователь или компьютер будет удален из домена AD.

AD-object-deletion Powershell Scripts

#Provide the input to choose to delete either User and Computer

$input = read-host "Enter your choice"
Switch($input)
{
0 { $result = 'User Deletion'}
1 { $result = 'Computer Deletion'}

}

#If input is greater than 1 it will throw error.

if ($input -gt 1)

{
Write-host "$input is not mentioned in the provided choices"  -ForegroundColor Cyan

}

#If 0 is selected then provide the user name that needs to deleted.

if($input -eq 0)
{
$user = Read-host "Provide user Name" 
Try{
Remove-aduser $user -confirm:$false 

Write-host "User $user is deleted" -foregroundcolor DarkGreen}

Catch{

Write-host "$user is not present in AD or the Username is incorrect" -Foregroundcolor DarkRed 
}
}
#If 1 is selected then provide the computer name that needs to deleted.

if ($input -eq 1)

{

$computer = Read-host "Provide Computer Name"

Try{
Remove-ADComputer $computer -confirm:$false 


Write-host "User $computer is deleted" -BackgroundColor DarkGreen}

Catch{

Write-host "$Computer is not present in AD or the Computer name is incorrect" -BackgroundColor DarkRed 
}

}

Получаем информацию об активности пользователя в домене по событиям Kerberos

Также вы можете получить историю аутентификации пользователя в домене по по событию выдачи билета Kerberos (TGT Request — EventID 4768). В этом случае в итоговых данных будет содержаться меньшее количество событий (исключены сетевые входы, обращения к папкам на DC во время получения политик и выполнения логон-скриптов). Следующий PowerShell скрипт выведет информацию о всех входах пользователей за последние 24 часа:

$alluserhistory = @() $startDate = (get-date).AddDays(-2) $DCs = Get-ADDomainController -Filter * foreach ($DC in $DCs){ $logonevents = Get-Eventlog -LogName Security -InstanceID 4768 -after $startDate -ComputerName $dc.HostName foreach ($event in $logonevents){ if ($event.ReplacementStrings -notlike ‘*$’) { $userhistory = New-Object PSObject -Property @{ UserName = $event.ReplacementStrings IPAddress = $event.ReplacementStrings Date = $event.TimeGenerated DC = $dc.Name } $alluserhistory += $userhistory } } } $alluserhistory

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

Свойства и методы интерфейса IADsPropertyList:

PropertyCount Это свойство интерфейса IADsPropertyList возвращает информацию о количестве свойств, предусмотренных для данного объекта.
GetPropertyItem() Этот метод позволяет вернуть свойство по его имени. В качестве параметров этот метод принимает имя свойства и его тип в виде значения перечисления ADSTYPEENUM (в нём предусмотрено 28 значений). Если тип свойства вам не известен, можно передать специальное значение ADSTYPE_UNKNOWN (26). Этот метод возвращает информацию в виде ссылки на объект IADsPropertyEntry, который можно использовать для получения информации о значении свойства.
Item() Этот метод отличается от метода GetPropertyItem() тем, что позволяет получить свойство (то есть объект IADsPropertyEntry) по имени или номеру. Тип свойства передавать при этом не надо.
Next() Этот метод позволяет вернуть следующее свойство в виде объекта IADsPropertyEntry. Обычно он используется для перебора всех свойств какого-либо объекта.
PurgePropertyList() Этот метод можно считать обратным методу IADs.GetInfo() — он очищает кэш свойств, удаляя из него информацию для всех свойств данного объекта. При этом сам объект Active Directory никак не затрагивается — этот метод работает только с представлением данного объекта в памяти. Обычно он используется, чтобы высвободить память на компьютере, на котором производятся операции с объектами Active Directory средствами ADSI.
PutPropertyItem() Этот метод позволяет присвоить новое значение свойству объекта Active Directory. По своим возможностям этот метод очень похож на метод Put() интерфейса IADs, и после его вызова необходимо вызвать метод IADs.SetInfo(). В качестве параметра метод PutPropertyInfo() принимает объект PropertyEntry, в котором должно быть задано новое значение для свойства.
Reset() Этот метод позволяет вернутся на начало списка свойств после вызова метода Next(), чтобы вернуться к исходному состоянию.
ResetPropertyItem() Этот метод позволяет удалить указанное свойство из кэша свойств. Этому методу можно передать как имя свойства, так и его номер. Этот метод используется только для экономии оперативной памяти, на сам объект Active Directory он никак не влияет.
Skip() Этот метод позволяет переместить курсор для списка свойств на указанное количество позиций. В качестве параметра этот метод принимает количество позиций, на которое следует переместиться. Обычно этот метод используется вместо метода Next() или вместе с ним для сокращения количества выполняемых операций.

Интерфейс IADsPropertyEntry предназначен для работы со значением (или значениями) свойства объекта Active Directory. Он может использоваться как для получения информации о значении свойства, так и для назначения свойству нового значения или значений. Свойства и методы:

Name Имя свойства, которое всегда соответствует наименованию соответствующего атрибута для объекта Active Directory согласно схеме.
ADsType Тип свойства в соответствии со значением перечисления ADSTYPEENUM.
ControlCode Позволяет определить тип операции, выполняемой со свойством. Возможные значения (перечисление ADS_PROPERTY_OPERATION_ENUM):
  • ADS_PROPERTY_CLEAR (1) — очистить объект свойства, убрав все настроенные для него ранее значения свойств;
  • ADS_PROPERTY_UPDATE (2) — заменить существующее значение свойства другим значением;
  • ADS_PROPERTY_APPEND (3) — добавить указанное значение к уже существующим;
  • ADS_PROPERTY_DELETE (4) — убрать ранее настроенное конкретное значение.
Values Определяет значения для свойства. Свойство Values работает с массивом объектов типа Variant. Любой из объектов типа Variant, который находится в данном массиве, должен обязательно реализовывать интерфейс IADsPropertyValue.

Интерфейсы IADsPropertyValue и IADsPropertyValue2 используются непосредственно для работы со значениями свойств. Каждому объекту IADsPropertyValue соответствует конкретное значение свойства. Массив значений (то есть массив объектов IADsPropertyValue) передаётся при помощи свойства Values объекта IADsPropertyEntry.

Создание команды

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

  • возможность указания времени, указывающие на начало создания лога;
  • понятный вывод сообщения соответствующий идентификаторам;
  • источник и цель аудита. Например администратор изменивший пароль пользователя;
  • тип события — success или fail.

Что бы получить события начинающиеся с определенной даты мы можем использовать существующее свойство ‘StartTime’ в массиве. ‘EndTime’ указывает обратное. В примере ниже мы получим события созданные за сутки:

Выше уже описывалась, что одна из проблем работы с журналом — это отсутствие форматирования каких-то данных. В примере ниже свойство ‘Messages’ хранит сплошной текст, а ‘Properties’ только некоторые отформатированные данные из ‘Messages’:

Пример выше — скорее идеальный случай. У вас может отличаться порядок или другая информация в ‘Properties’. Эти данные точно будут отличаться в логах с разными ID. В случае с одинаковыми ID — это так же может случатся. 

Готовая функция, выводящая информацию об этих событиях, будет следующей:

Варианты использования функции: 

 

Рекомендую

Отчет об устаревших объектах

Хотите узнать, какие объекты еще присутствуют в вашем домене, тогда это отличный скрипт, который найдет их и поможет вам полностью создать объекты. Это самый интересный скрипт в категории скриптов Active Directory Powershell.

Вероятный результат

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

Stale comp reports Powershell Scripts

###############################################

#Description:
#This script will fetch stale computer objects beyond 90 days . And should run in any of the AD servers.
################################################################################################

#FIND INACTIVE COMPUTERS
#-------------------------------

Import-Module ActiveDirectory

#Get AD Computers that haven't logged on in xx days

$DaysInactive = 90
$InactiveDate = (Get-Date).Adddays(-($DaysInactive))
$Computers = Get-ADComputer -Filter { LastLogonDate -lt $InactiveDate -and Enabled -eq $true } -Properties LastLogonDate | Select-Object Name, LastLogonDate, DistinguishedName


# REPORTING
#-------------------------------
# Export results to CSV

$Computers | Export-Csv C:\Users\test\Desktop\InactiveComputers.csv -NoTypeInformation

Get-ADComputer — синтаксис использования командлета

Чтобы получать информацию из AD с помощью командлетов из модуля AD для PowerShell, вам не нужны права администратора домена. Достаточно, чтобы учётная запись, под которой запускается командлет, была членом группы «Domain Users / Authenticated Users».

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

Get-ADComputer -Identity hackware-server

Пример вывода:

DistinguishedName : CN=HACKWARE-SERVER,OU=Domain Controllers,DC=ds,DC=hackware,DC=ru
DNSHostName       : HackWare-Server-2022.ds.hackware.ru
Enabled           : True
Name              : HACKWARE-SERVER
ObjectClass       : computer
ObjectGUID        : 77e65141-ebec-4728-a1cc-563199d86bf8
SamAccountName    : HACKWARE-SERVER$
SID               : S-1-5-21-670420343-3848213752-1643348011-1000
Get-ADComputer -Identity hackware-server -Properties *

Используя Get-Member, вы можете получить список всех свойств объекта ADComputer:

Get-ADComputer -Filter * -Properties * | Get-Member

Дата последнего входа компьютеров в сеть указана в атрибуте LastLogonDate.

Командлет Get-ADComputer позволяет отображать любые свойства компьютера в результатах выполнения команды. Удалите всю ненужную информацию, оставив только значения атрибутов Name и LastLogonDate.

Get-ADComputer -identity hackware-win -Properties * | Format-Table Name,LastLogonDate -Autosize

Итак, мы получили данные о последней регистрации в домене для отдельного компьютера. Затем вам нужно изменить команду, чтобы она отображала информацию о времени последней сетевой регистрации для всех компьютеров в домене. Для этого замените -Identity на -Filter *:

Get-ADComputer -Filter * -Properties * | Format-Table Name,LastLogonDate -Autosize

У нас получилась простая таблица, которая содержит всего 2 поля: имя компьютера и дата LastLogonData. Вы можете добавить в эту таблицу другие поля объекта ADComputer.

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

Get-ADComputer -SearchBase 'OU=Paris,DC=woshub,DC=loc' -Filter * -Properties * | Format-Table Name,LastLogonDate -Autosize

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

Get-ADComputer -Filter * -Properties * | Sort-Object LastLogonDate | Format-Table Name,LastLogonDate -Autosize

Итак, у нас есть список компьютеров и дата их последнего входа в домен Active Directory. Теперь мы хотим отключить учётные записи компьютеров, которые не использовались в течение 120 или более дней.

Используя Get-Date, мы можем получить значение текущей даты в переменной и уменьшить его до 120 дней:

$date_with_offset = (Get-Date).AddDays(-120)

Полученную переменную даты можно использовать как фильтр запроса Get-ADComputer в поле LastLogonDate:

Get-ADComputer -Properties LastLogonDate -Filter {LastLogonDate -lt $date_with_offset } | Sort-Object LastLogonDate | Format-Table Name,LastLogonDate -Autosize

Итак, мы создали список неактивных учётных записей компьютеров, которые не регистрировались в сети более 120 дней. Используйте команду Disable-ADAccount или Set-ADComputer, чтобы отключить их.

Совет. В первый раз лучше проверить результаты выполнения команды с помощью переключателя -WhatIf, который позволяет увидеть, что произойдёт, если бы команда была запущена, но при этом в системе ничего изменено не будет.

Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $date_with_offset } | Set-ADComputer -Enabled $false -WhatIf

Теперь вы можете отключить все неактивные учётные записи компьютеров:

Get-ADComputer -Properties LastLogonDate -Filter {LastLogonData -lt $date_with_offset } | Set-ADComputer -Enabled $false

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

Двухфакторная аутентификация в 1С через Telegram и Email

1С, начиная с версии платформы 8.3.21, добавили в систему возможность двойной аутентификации. Как это работает: в пользователе информационной базы появилось свойство «Аутентификация токеном доступа» (АутентификацияТокеномДоступа во встроенном языке), если установить этот признак и осуществить ряд манипуляций на встроенном языке, то появляется возможность при аутентификации отправлять HTTP запросы, которые и реализуют этот самый второй фактор. Данное расширение позволяет организовать двухфакторную аутентификацию с помощью электронной почты или мессенджера Telegram.

2 стартмани

18

Понравилась статья? Поделиться с друзьями:
Быть в курсе нового
Добавить комментарий

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