gpt4 book ai didi

azure - 比较 AAD 和 ADS 之间的用户

转载 作者:行者123 更新时间:2023-12-03 02:14:29 24 4
gpt4 key购买 nike

我正在尝试将用户从学区 ADS 中清除,以实现我们设定的一些内务管理目标。现在我有一个非常好的脚本,可以找到所有已停用的学生帐户,并在停用 30 天后将其删除。我们发现,即使我们从 ADS 中删除这些用户,它们也会在 AAD 中的已删除用户文件夹中额外保留 30 天。我正在尝试构建一个脚本,查找 AAD 中已删除用户文件夹中的所有用户,然后将其与 ADS 中的用户进行匹配,同时还避免设置为不与 AAD 同步学生数据的 2 个 OU 。我的脚本的前半部分很简单,因为我只需要 AAD 中已删除用户文件夹中的名称。

Get-MsolUser -ReturnDeletedUsers | Select DisplayName, ObjectId | Export-Csv -LiteralPath C:\Results\DeletedUsers.csv -NoTypeInformation

这给了我一个可以从中提取的 csv,但这是一个大问题。我无法在 AAD 和 ADS 之间进行共享的一对一选择。到目前为止,我发现的最好的事情是在我的后续脚本中指定使用 AAD 中的 DisplayName (studentid#@domain.org) 与 ADS 中的 UserPrincipalName 相对应。

$Users = Get-Content C:\Results\DeletedUsers.csv

ForEach ($User in $Users){
Get-ADUser -Filter * -Properties UserPrincipalName | Where { ($_.UserPrincipalName -Like $User) }
}

这里的问题是,后半部分已经运行了很长时间,我需要一些更可靠和更快的东西。

最佳答案

您的代码的主要问题在于 foreach 循环逻辑,您在每次循环迭代中查询域中的所有用户,而不是 filtering for a specific user 。另一方面,不清楚您的 AD On Premise 是否与 Azure AD 同步,为什么不删除 AD On Prem 中的对象并让它们与 Azure AD 同步呢?另一个问题是,您仅从 Get-MsolUser 查询中选择 DisplayNameObjectId 属性,这样您就可以删除在 AD On Prem 中搜索 AD 对象时派上用场的重要属性,例如 onPremisesDistinguishedNameonPremisesSamAccountNameonPremisesUserPrincipalName。 p>

对代码的立即修复是这样的,但是您应该考虑上面提到的内容。

$Users = (Import-Csv C:\Results\DeletedUsers.csv).DisplayName
$OUsToSkip = ('OU=something,DC=something', 'OU=somethingelse,DC=something') -join '|'
foreach($User in $Users) {
# mail attribute is equal to `$user` OR UPN is equal to `$user`
$filter = "(|(mail=$user)(userprincipalname=$user))"
$usr = Get-ADUser -LDAPFilter $filter
if($usr.DistinguishedName -notmatch $OUsToSkip -and $usr) {
$usr
}
}

关于azure - 比较 AAD 和 ADS 之间的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71946459/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com