[英]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.