簡體   English   中英

如何查找在特定日期被禁用的用戶

[英]How to find users who were disabled specific dates

有人可以幫我在特定時間范圍內從 AD 中找到禁用的帳戶嗎?

例如,我可以運行一個顯示過去 30 天、60 天、90 天的腳本

Search-ADAccount -SearchBase "DC=corp,DC=ad,DC=iata,DC=org" -AccountDisabled -UsersOnly | Get-ADUser -Properties whenChanged | Where whenChanged -gt (Get-Date).AddDays(-60) | Export-CSV “C:\Disabledusers60.CSV” –NoTypeInformation

問題是這樣我也會看到 2022 年 1 月的當前用戶,我的想法是能夠運行一個特定的日期,所以在 2 月底有一個 12 月 1 日至 31 日之間的禁用用戶列表12 月。然后在 3 月獲得從 1 月 1 日到 1 月 31 日的列表,依此類推。

這種方式不會在過去 60 天內從 AD 中退出,包括當月禁用的帳戶。

對不起,大線程的解釋,希望有人可以在這里帶來一些啟示。

這應該會為您提供一個禁用的 AD 用戶列表,並且他們的WhenChanged屬性介於該月的第一天和最后一天之間。

$today = [datetime]::Today
$firstDay = [datetime]::new($today.Year, $today.Month, 1, 0, 0, 0).ToString('yyyyMMddHHmmss.0Z')
$lastDay = [datetime]::new($today.Year, $today.Month + 1, 1, 0, 0, 0).AddSeconds(-1).ToString('yyyyMMddHHmmss.0Z')

$params = @{
    SearchBase = "DC=corp,DC=ad,DC=iata,DC=org"
    Properties = "whenChanged"
    LDAPFilter = "(&(userAccountControl:1.2.840.113556.1.4.803:=2)(whenChanged>=$firstDay)(whenChanged<=$lastDay))"
}

Get-ADUser @params | Export-Csv ...

正如所評論的, whenChanged屬性不一定是用戶被禁用的日期和時間,因為之后可能對用戶帳戶進行了其他修改。

如何探測事件4725的 windows 事件日志(==> 用戶帳戶已禁用)?

# example timeframe December 2021
$startTime = [datetime]'12/1/2021'
$endTime   = $startTime.AddMonths(1).AddDays(-1)
$filter = @{LogName='Security';ProviderName='Microsoft-Windows-Security-Auditing';ID=4725;StartTime=$startTime;EndTime=$endTime }
$result = Get-WinEvent -FilterHashtable $filter -ComputerName <YourDC> | ForEach-Object {
    # convert the event to XML and grab the Event node
    $eventXml   = ([xml]$_.ToXml()).Event
    $userName   = ($eventXml.EventData.Data | Where-Object { $_.Name -eq 'TargetUserName' }).'#text'
    $userSID    = ($eventXml.EventData.Data | Where-Object { $_.Name -eq 'TargetSid' }).'#text'
    $userDomain = ($eventXml.EventData.Data | Where-Object { $_.Name -eq 'TargetDomainName' }).'#text'
    # output the properties you need
    [PSCustomObject]@{
        UserName   = $userName
        UserSID    = $userSID
        UserDomain = $userDomain
        Disabled   = [DateTime]$eventXml.System.TimeCreated.SystemTime
    }
}

# output on screen
$result

# output to CSV file
$outFile = 'X:\DisabledUsers_{0:MMM-yyyy}.csv' -f $startTime
$result | Export-Csv -Path $outFile -NoTypeInformation

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM