我们有一个Powershell脚本,可以邀请来宾批量访问Azure AD。电子邮件地址包含在CSV文件中。
一切正常,但是我想添加功能来检查用户是否已经在租户中,这样他们就不会再收到第二个邀请(看来您可以继续邀请已经存在或已经被邀请的人客人)。
对于像bob@company.com
这样的普通用户,使用
$email = "bob@company.com"
我可以简单地使用它:
Get-AzureADUser -ObjectId "$email"
当然,来宾的格式类似于john_gmail.com#EXT#tenant.onmicrosoft.com
。将其用作ObjectID
确实可以正常工作,但是在CSV中我们当然会看到john@gmail.com
,因此它无法查找用户。
在进行此查找时,是否存在一些明智的方法将john@email.com
转换为john_gmail.com#EXT#tenant.onmicrosoft.com
?实际在邀请他们时,需要在脚本后面将其视为普通的电子邮件地址。
谢谢
答案 0 :(得分:0)
鉴于$email = "john@email.com"
,您可以像这样搜索"john_gmail.com#EXT#tenant.onmicrosoft.com"
:
Get-AzureADUser -ObjectId "$($email -replace "@", "_")#EXT#@tenant.onmicrosoft.com"
或
Get-AzureADUser -ObjectId ($email.Replace("@","_") + "#EXT#@tenant.onmicrosoft.com")
尽管您仍然可以搜索扩展的术语,但这不会更改$email
的值。
答案 1 :(得分:0)
我意识到我可以使用
$email -replace "@", "_"
要获得我想要的输出。我将复制该变量,以避免引起问题或稍后在脚本中将其还原。