Powershell 脚本,用于仔细检查 30 天前登录的 Active Directory 用户

问题描述 投票:0回答:0

我正在尝试创建一个脚本来禁用过去 30 天内不活动的用户帐户。如果用户上次登录是在 30 天前,我有一个脚本可以遍历我们环境中的所有 DC 以提取用户信息。但是,这不包括过去 30 天内来自这些相同用户的日志。

下面是我必须仔细检查的脚本,但它没有提取正确的信息:

$activeusers = @()
$disablingusers = @()
foreach($row in $dc) {
foreach($user in $AllUsers) {
$hostname = $row.hostname
$name = $user.Name
$currentuser = @(Get-ADUser -Filter {enabled -eq $True -and lastLogonTimestamp -gt $time } -Server $hostname -Properties Name, SamAccountName, EmailAddress, Department, Description, LastLogonTimestamp, DistinguishedName | 
Select Name, SamAccountName, EmailAddress, Department, Description, DistinguishedName,@{n='lastLogonTimestamp';e={[DateTime]::FromFileTime($_.lastLogonTimestamp)}} | 
Where-Object { ($_.Name -match $name -and $_.DistinguishedName -like "*User*" -or $_.DistinguishedName -like "*Contractor*" -and $_.DistinguishedName -notlike "*Service*"  -and $_.DistinguishedName -notlike "*Extended*" -and $_.DistinguishedName -notlike "*Disabled*") } ) 
$activeusers += $currentuser
} }

即使我在 Where-Object 语句中有 $_.Name -match $name 行,脚本也会将用户拉到原始列表之外,并且不包含第一个列表中的单个用户。

我还尝试将可比变量更改为 EmailAddress 和 SamAccountName,并将可比变量放在 -Filter 行中。

powershell active-directory
© www.soinside.com 2019 - 2024. All rights reserved.