Я хотел знать, какую команду или сценарий можно использовать или настроить для поиска учетной записи пользователя AD, которая была отключена за последние 6 месяцев?
Сценарий 1: Не знаю, как настроить этот сценарий ниже, так как он довольно сложный.
# When an account is disabled, the userAccountControl attribute is set to 514.
# Therefore, with Get-ADReplicationAttributeMetadata to find out when that attribute was the last set
$disabledUsers = Get-ADObject -Filter "ObjectClass -eq 'User' -and userAccountControl -eq '514'"
foreach ($disabledUser in $disabledUsers)
{
Get-ADReplicationAttributeMetadata $disabledUser -Server localhost |
Where-Object { $_.AttributeName -eq 'UserAccountControl' } | Select Object, LastOriginatingChangeTime |
Where-Object { $_.LastOriginatingChangeTime -gt (Get-Date).AddDays(-180) }
}
Сценарий 2: я смог использовать этот сценарий и получить все необходимые столбцы и фильтры, однако он не показывает учетную запись AD, которая была отключена за последние 6 месяцев?
Import-Module ActiveDirectory
$domainDN = (Get-ADDomain).DistinguishedName
$excludeOUs = @(
'OU=Shared Mailbox'
'OU=Company Leaver'
) | ForEach-Object { $_ + ',' + $domainDN }
$Past = -180
$Days = (Get-Date).AddDays($Past)
$ResultPath = "C:\TEMP\ADLastLogonPast_$($Past)_Days.csv"
$properties = @('Name', 'mail', 'physicalDeliveryOfficeName', 'DisplayName', 'title', 'SamAccountName', 'CanonicalName', 'lastlogondate')
$filter = { (LastLogonDate -notlike '*' -or LastLogonDate -le $Days) -and (passwordLastSet -le $Days) -and (enabled -eq $True) -and (PasswordNeverExpires -eq $false) -and (whenCreated -le $Days) }
Get-ADUser -properties $properties -Filter $filter -SearchBase $domainDN |
Select-Object DisplayName,
Title,
PhysicalDeliveryOfficeName,
UserPrincipalName,
LastLogonDate,
@{ n = 'LastLogonDaysAgo'; e = { [int]((Get-Date) - $_.LastLogonDate).TotalDays } },
@{ n = 'CN'; e = { Split-Path $_.CanonicalName -Parent } },
@{ n = 'ParentContainer'; e = { $_.DistinguishedName -replace '^CN=.*?(?=CN|OU)' } } | Where-Object {
($_.SamAccountName -notmatch '^(Calendar|Room|Account|Fax|Team|Office|Test|User|SM_|HealthMailbox|SVC)$') -and
($excludeOUs -notcontains $_.ParentContainer)
} |
Export-Csv -NoTypeInformation -Path $ResultPath
LastOriginatingChangeTime -gt $180DaysAgo
, а не-lt
? - person Mathias R. Jessen   schedule 01.05.2020@{Name = 'LastLogonDate'; Expression = {'{0:dd/MM/yyyy' -f $_.LastLogonDate}}
- person Theo   schedule 01.05.2020