准确理解时间戳为何不受广告对象影响

准确理解时间戳为何不受广告对象影响

我编写了一个脚本,从人力资源数据库获取数据并填充 AD 中的相关属性,例如部门、职位、经理、位置。

由于人们偶尔会改变职务、部门和/或位置,因此保持 AD 最新状态非常重要,因为我们有依赖此信息有效性的流程,例如基于位置的动态分发组。为了尽量保持流程快速,我只Set-ADuser为每个用户运行,无论是否有任何变化。

我担心我会不必要地更改修改后的时间戳,因为不断地进行这些更改比验证不需要进行任何更改要快得多。

令我惊讶的是,AD 似乎正在做某物对我来说,这很正常,因为大多数用户修改的时间戳与后续脚本执行时间不匹配。这对我来说似乎是一件好事,因为 AD 正在幕后帮我完成这件事。仅供参考,我有 2 个 DC 可以就此事进行沟通,而且我两次都进行了检查,以确保我不会得出可怕的结论。

我找不到权威的来源来解释这一点,而且我不确定这是 PowerShell 为我完成的工作还是 Active Directory 正在做的事情。


脚本中有两部分对 Active Directory 进行更新。首先更新其员工 ID

foreach($currentUser in $idlessUsers){
    Write-Progress @progressParameters -CurrentOperation $currentUser.Name -PercentComplete ($userIndex / $idlessUsers.count * 100)
    $matchuser = $hrUsers | Where-Object{$_.givenname -eq $currentUser.givenname -and $_.surname -eq $currentUser.surname}
    if($matchuser){
        $currentUser | Set-ADUser -EmployeeID $matchuser.employeeid
        Write-Host ("{0} employeeid updated to {1}" -f $currentUser.Name, $matchuser.employeeid) -ForegroundColor Green
    }
    $userIndex++
}

第二个使用 splatting 更改更多信息

foreach($singleADUser in $usersToUpdate){
    Write-Progress @progressParameters -CurrentOperation $singleADUser.Name -PercentComplete ($userIndex / $usersToUpdate.count * 100)
    # Try and find a match in the $hrUsers
    $matchingHRUser = $hrUsers | Where-Object{$_.EmployeeID -eq $singleADUser.EmployeeID}

    if($matchingHRUser){
        # Get the AD object of this users supervisor
        $mathingUserSupervisor = $ADSupervisors | Where-Object{$_.employeeid.trim() -eq $matchingHRUser.supervisorid}

        if(!$mathingUserSupervisor){
            Write-Host ("Could not find supervisor for {0} using supervisor id: {1}" -f $matchingHRUser.name, $matchingHRUser.supervisorid) -ForegroundColor Red
        }

        $parameters = @{
            Replace = @{l=$matchingHRUser.Location}
            Title = $matchingHRUser.title
            Department = $matchingHRUser.Department
            Manager = $mathingUserSupervisor
        }
        $singleADUser | Set-ADUser @parameters
    } else {
        write-host "Cannot find a HR user with ID: '$($singleADUser.EmployeeID)' and Name: $($singleADUser.Name)" -ForegroundColor Red
    }

    $userIndex++
}

相关内容