我试图使用CSV文件将用户列表添加到我在租户中设置的AzureAD组。脚本似乎正在工作,但由于某种原因,我的一个If语句中的一个特定写主机没有按预期显示变量数据。我在所有其他写主机中使用相同的变量,它们都可以工作,所以我不确定这里缺少了什么。
如果重要的话,我的CSV看起来像这样:
Name,InvitedUserEmailAddress
Test User01,testuser01@gmail.com
Test User02,testuser02@gmail.com
这是我简化的PS片段。
$users = import-csv "D:\UserListTest1.csv"
$groupID = Get-AzureADGroup -SearchString "TestGroup" | Select-Object ObjectId, displayname
foreach ($email in $users) {
# Pull usersAAD email list from AzureAD
$usersAAD = Get-AzureADUser -SearchString $($email.InvitedUserEmailAddress) | Select-Object ObjectId, displayname, mail
# Users from CSV not in AzureAD
if ($usersAAD.mail -eq $null) {
Write-Host "User $($usersAAD.displayname) does not exist in AzureAD" -ForegroundColor Red
}
else {
# Pull AzureAD user group membership from users that exist in AzureAD
$ExistingGroups = Get-AzureADUserMembership -ObjectId $usersAAD.ObjectId | Select-Object displayname, objectid
# Users that are already members of the AzureAD group
if ($ExistingGroups.ObjectId -eq $groupID.objectId) {
Write-Host "$($usersAAD.displayname) already exists in $($groupID.displayname)" -ForeGroundColor Yellow
}
else {
# Add users to AzureAD group if they are not already part of AzureAD group
Add-AzureADGroupMember -ObjectId $groupID.ObjectId -RefObjectId $usersAAD.ObjectId
Write-Host "Added $($usersAAD.displayname) to $($GroupID.displayname)" -ForeGroundColor Green
}
}
}
问题出在 If 语句的写入主机结果上,当用户已在组中时,会发生该语句。
# Users from CSV not in AzureAD
if ($usersAAD.mail -eq $null) {
Write-Host "User $($usersAAD.displayname) does not exist in AzureAD" -ForegroundColor Red
}
在我的示例中,testuser02@gmail.com 在我的 AzureAD 租户中不存在,因此我希望此用户出现一个红色文本,显示“AzureAD 中不存在用户 testuser02@gmail.com”。相反,我看到以下输出。测试用户01工作正常,但我的测试用户02没有。很抱歉格式不正确。
Test User01 already exists in TestGroup
User does not exist in AzureAD
为什么对于已经是组成员的用户,它会有空值?它甚至在输出中添加了一个空格。我试着移除。也显示一个对象名称,但是没有任何帮助。
可能与此有关的一件奇怪的事情是,在我运行整个过程后,$usersAAD变量似乎为空。如果我在整个程序运行后编写主机$usersAAD(即使它正确地邀请用户),它不会返回任何结果。
如评论中所解释的,“当条件
是指不存在的对象($usersAAD.mail-eq$null
为$true
,则用户$($usersaid.displayname)不…$null
)。这就是为什么在输出中,您得到的用户不存在于AzureAD
.要解决此问题,您可以参考集合中的项($email
)。
这是我对你的代码的看法,包括了一些修正,以及一些内联注释来帮助你思考。
$groupID = Get-AzureADGroup -SearchString "TestGroup"
foreach ($email in Import-Csv "D:\UserListTest1.csv") {
# if this user exists in Azure AD
if ($usersAAD = Get-AzureADUser -SearchString $email.InvitedUserEmailAddress) {
# get the membership
$ExistingGroups = Get-AzureADUserMembership -ObjectId $usersAAD.ObjectId
# and check if the test group is part of the user membership
# (notice `-contains` here is faster than `-eq` !!!)
if ($ExistingGroups.ObjectId -contains $groupID.objectId) {
Write-Host "$($usersAAD.displayname) already exists in $($groupID.displayname)" -ForeGroundColor Yellow
# if this condition was `$true` just go to the next item in our loop
continue
}
# if we're here above condition was `$false`, so add this user to the test group
Add-AzureADGroupMember -ObjectId $groupID.ObjectId -RefObjectId $usersAAD.ObjectId
Write-Host "Added $($usersAAD.displayname) to $($GroupID.displayname)" -ForeGroundColor Green
# and go to next item in loop
continue
}
# if we're here we can assume the user did not exist in Azure AD, hence:
Write-Host "User $($email.Name) does not exist in AzureAD" -ForegroundColor Red
}
问题内容: 我使用mysql 5.7 我想将联接表的结果串联到单列中。我使用包裹在函数中的函数。这是查询 列包含来自联接表的数据。数据已正确检索,但问题是列未转换为正确的JSON。 如您所见,最后有点“切”。 我也尝试过,但是现在它不能转换为正确的数组。它看起来像字符串太大,不适合列。有办法解决吗? 更新 问题必须出在不适合列的st大小中。我尝试从联接表中选择较少的列,并且它可以正常工作。也许有一
意识到递归是我的弱点之一后,我找到了一个网站,迫使你递归地解决简单问题(https://codestepbystep.com/problem/view/cpp/recursion/digitsSorted?problemsetid=15) 我坚持的一个(digitalsSorted,数字5)如下:调用一个传递数字作为参数的函数。如果该数字中的数字按递增顺序排序,则函数返回True,否则返回Fals
我有一个表格和一个表格。包含所有课程的列表,包含教授/协助该课程的志愿者列表。 我想写一个查询,返回没有任何志愿者分配给它的所有课程的列表。这就是正在发生的事情: 以下所有查询都返回 course_id 3 course_id 4 course_id 5 为什么course_id 1(正确)被遗漏,而course_id 3却不是??? 同样的问题,但没有一个解决方案对我有效: 左侧外部连接轨4
问题内容: 我有一个我以前从未见过的问题,猫鼬的findByIdAndUpdate没有在回调中返回正确的模型。 这是代码: 数据库中的原始文档如下所示: 进入的updateObj如下所示: 从回调返回的模型与原始模型相同,而不是updatedObj。如果我查询数据库,它已正确更新。它只是没有从数据库中返回。 这感觉像是一个“愚蠢的用户”错误,但我看不到它。任何想法表示赞赏。 问题答案: 在Mong
情况: > 在按钮上的第一个片段,我想打开带有部分的第二个片段 在第二个片段上,我可以创建新部分(或使用已存在的),然后在列表项上单击打开第三个片段 在第三个片段上,我可以编写新服务(或使用已存在的服务),然后单击按钮返回第一个片段 并显示部分(来自第二个片段)和服务(来自第三个片段) 我的想法是使用片段。在第二个片段上设置参数(bundle),并将其传输到第三个片段 我应该如何正确地将变量从Al
我使用Hibernate与Oracle 12c。执行保存操作后,Hibernate不返回数据库中具有序列的主键(自动增量)的正确值。在下面的代码中,UserId列(自动增量)在DB中有一个序列,在DB中保存操作后,值是81,但Hibernate中的返回值是3441。(值只是例子)我的代码:' ` 注意:相同的代码与其他数据库运行良好。