Получите список пользователей, которые являются администраторами домена и ранее не входили в систему 30 дней?

Как я могу получить список пользователей из AD, которые являются администраторами домена и не выполняли вход входили в систему за последние 30 дней?

1
задан 11 June 2016 в 16:42
3 ответа

Чтобы реализовать предложение пользователя5870571 с помощью >> users.csv (в случае, если ваш файл пуст - мой тоже), сделайте следующее:

1) сохраните приведенный ниже сценарий в файл .ps1. Обратите внимание, что я удалил Export-Csv

    Import-Module ActiveDirectory
    $Age = Read-Host "Accounts that have not been logged into in the last how many days should be shown?"
    $When = ((Get-Date).AddDays(-$Age)).Date
    $Members = (Get-ADGroupMember -Identity "Domain Admins" -Recursive).DistinguishedName
    Foreach ($Member in $Members) {
    Get-ADUser -Identity $Member -Property LastLogonDate | Where LastLogonDate -lt $When | Select SamAccountName,UserPrincipalName,LastLogonDate
}

2) после сохранения файла перейдите к нему из приглашения PowerShell с повышенными привилегиями и добавьте в конце >> users.csv .

Например, я назвал свой файл get-dausers.ps1 и сохранил его на рабочем столе, открыл приглашение PowerShell и перешел к нему, затем набрал . \ Get-dausers.ps1 >> users.csv - на рабочем столе будет создан файл .csv, который больше не будет пустым.

0
ответ дан 3 December 2019 в 20:37

user360071, вот PowerShell скрипт, который будет делать то, что вы хотите.

Import-Module ActiveDirectory
$Age = 30
$When = ((Get-Date).AddDays(-$Age)).Date
$Members = (Get-ADGroupMember -Identity "Domain Admins" -Recursive).DistinguishedName
Foreach ($Member in $Members) {
Get-ADUser -Identity $Member -Property LastLogonDate | Where LastLogonDate -lt $When | Select SamAccountName,UserPrincipalName,LastLogonDate | Export-CSV -Path $env:USERPROFILE\Desktop\users.csv -NoTypeInformation -Append
}

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

Import-Module ActiveDirectory
$Age = Read-Host "Accounts that have not been logged into in the last how many days should be shown?"
$When = ((Get-Date).AddDays(-$Age)).Date
$Members = (Get-ADGroupMember -Identity "Domain Admins" -Recursive).DistinguishedName
Foreach ($Member in $Members) {
Get-ADUser -Identity $Member -Property LastLogonDate | Where LastLogonDate -lt $When | Select SamAccountName,UserPrincipalName,LastLogonDate | Export-CSV -Path $env:USERPROFILE\Desktop\users.csv -NoTypeInformation -Append
}

Updated Answer

Hello user360071. Когда вы хотите добавить еще один запрос к вашему вопросу или вам нужно уточнить, что вы пытаетесь задать, вы можете отредактировать вопрос и сохранить изменения.

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

Вы попробовали >> users.csv, но файл Excel пуст. В PowerShell вы хотите сделать | Export-CSV users.csv. Этим скрипты были обновлены.

.
2
ответ дан 3 December 2019 в 20:37

Чтобы использовать сообщение пользователя5870571 -

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

] lastLogon vs. lastLogonTimestamp в Active Directory

  • Lastlogon обновляется только на контроллере домена, который выполняет аутентификацию, и не реплицируется.

  • LastLogontimestamp реплицируется, но по умолчанию только если он на 14 дней или более старше предыдущего значение.

Ниже приведен обновленный код. Я также добавил "сортировку по LastLogon", потому что считаю это полезным.

Import-Module ActiveDirectory

$Age = Read-Host "Accounts that have not been logged into in the last how many days should be shown?"

$When = ((Get-Date).AddDays(-$Age)).Date

$Members = (Get-ADGroupMember -Identity "Domain Admins" -Recursive).DistinguishedName

Foreach ($Member in $Members) {
    Get-ADUser -Filter {DistinguishedName -eq $Member} -Property LastLogonTimestamp | Where {([datetime]::FromFileTime($_.LastLogonTimestamp)) -lt $When} |
    Select SamAccountName,UserPrincipalName,@{Name="LastLogon";Expression={[datetime]::FromFileTime($_.LastLogonTimestamp)}} | Sort-Object LastLogon |
    Export-CSV -Path $env:USERPROFILE\Desktop\users.csv -NoTypeInformation -Append
}
0
ответ дан 3 December 2019 в 20:37

Теги

Похожие вопросы