Получить список пользователей в Active Directory, которые не вошли в систему в течение указанного количества дней с помощью PowerShell

 



Клиент в настоящее время находится на стадии планирования миграции в Azure AD и Office 365, и одной из вещей, которые нам были нужны, был список пользователей, которые не вошли в систему в течение последних нескольких месяцев, но все еще активны в нашем Active Directory.

Ну, это снова PowerShell на помощь (с Visual Studio Code my IDE of choice) со следующим фрагментом кода, который будет запрашивать Active Directory среду в поисках учетных записей, которые не были активны в течение 90 дней, и даст мне  CSV-файл с их логинами и последней меткой времени входа в систему.

<ya-tr-span data-index="7-0" data-value="import-module ActiveDirectory
" data-translation="импорт-модуль ActiveDirectory
" data-type="trSpan">импорт-модуль ActiveDirectory
</ya-tr-span><ya-tr-span data-index="7-1" data-value="$domain = "adatum.com.au"
" data-translation="$domain = "adatum.com.au"
" data-type="trSpan">$domain = "adatum.com.au"
</ya-tr-span><ya-tr-span data-index="7-2" data-value="$DaysInactive = 90
" data-translation="$DaysInactive = 90
" data-type="trSpan">$DaysInactive = 90
</ya-tr-span><ya-tr-span data-index="7-3" data-value="$time = (Get-Date)." data-translation="$time = (Get-Date)." data-type="trSpan">$time = (Get-Date).</ya-tr-span><ya-tr-span data-index="7-4" data-value="Adddays(-($DaysInactive))
  
" data-translation="Adddays (- ($DaysInactive))
  
" data-type="trSpan">Adddays (- ($DaysInactive))
  
</ya-tr-span><ya-tr-span data-index="7-5" data-value="# Get AD Users with lastLogonTimestamp less than time specified and is enabled
" data-translation="# Get AD Users with lastLogonTimestamp less than time specified and is enabled
" data-type="trSpan"># Get AD Users with lastLogonTimestamp less than time specified and is enabled
</ya-tr-span><ya-tr-span data-index="7-6" data-value="Get-ADUser -Filter {LastLogonTimeStamp -lt $time -and enabled -eq $true} -Properties LastLogonTimeStamp |
  
" data-translation="Get-ADUser-Filter {LastLogonTimeStamp-lt $time-and enabled-eq $true} - свойства LastLogonTimeStamp |
  
" data-type="trSpan">Get-ADUser-Filter {LastLogonTimeStamp-lt $time-and enabled-eq $true} - свойства LastLogonTimeStamp |
  
</ya-tr-span><ya-tr-span data-index="7-7" data-value="# Output Name and lastLogonTimestamp attributes into CSV
" data-translation="# Вывод атрибутов Name и lastLogonTimestamp в CSV
" data-type="trSpan"># Вывод атрибутов Name и lastLogonTimestamp в CSV
</ya-tr-span><ya-tr-span data-index="7-8" data-value="select-object Name,@{Name="Stamp"; Expression={[DateTime]::FromFileTime($_." data-translation="select-имя объекта,@{Name= "Stamp"; Expression={[DateTime]:: FromFileTime($_." data-type="trSpan">select-имя объекта,@{Name= "Stamp"; Expression={[DateTime]:: FromFileTime($_.</ya-tr-span><ya-tr-span data-index="7-9" data-value="lastLogonTimestamp)." data-translation="lastLogonTimestamp)." data-type="trSpan">lastLogonTimestamp).</ya-tr-span><ya-tr-span data-index="7-10" data-value="ToString('yyyy-MM-dd')}} | export-csv Inactive_Users." data-translation="ToString ('yyyy-MM-dd')}} | export-csv Inactive_Users." data-type="trSpan">ToString ('yyyy-MM-dd')}} | export-csv Inactive_Users.</ya-tr-span><ya-tr-span data-index="7-11" data-value="csv -notypeinformation
" data-translation="csv-notypeinformation
" data-type="trSpan">csv-notypeinformation
</ya-tr-span>

Сохраните весь код в PS1, а затем запустите его на сервере, который имеет модули ad PowerShell (обычно один из ваших DC), а затем он создаст CSV-файл, расположенный там, где находится скрипт, со списком всех пользователей, которые все еще включены, но не вошли в систему в вашей среде.