当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 如何更新 Azure AD 来宾帐户的照片

作者:精品下载站 日期:2024-12-14 04:09:27 浏览:12 分类:玩电脑

如何更新 Azure AD 来宾帐户的照片


为来宾账户提供尽可能最好的形象

几年前,我写过一篇文章,介绍了为什么将用户照片添加到 Azure AD 来宾帐户是件好事。当时,Teams 还处于起步阶段,但人们已经清楚 Azure B2B 协作是允许外部人员访问租户资源的重要方法。在应用程序以多种方式突出显示用户照片(例如在电子邮件标题或团队聊天中显示照片)的世界中,通过向外部人员的来宾帐户添加照片来为这些外部人员提供面孔是有意义的。

随着时间的推移,280 多万 Teams 用户在 Microsoft 365 领域所投下的阴影现在已经变得巨大。随着时间的推移,还意味着包含用于更新用户照片的 Set-AzureADUserThumbnailPhoto cmdlet 的 Azure AD 模块将很快过时。现在是时候了解如何使用 Microsoft Graph PowerShell SDK 更新来宾帐户的照片了,尤其是当您已将大量邮件联系人迁移为来宾帐户时。

嘉宾缩略图

在开始之前,重要的是要了解访客帐户只需要缩略图(小)照片。当照片出现在 Teams 在线会议中时(如果您不使用网格头像),用户帐户需要更高分辨率的照片才能看起来更好。如本文所述,最好使用 Exchange Online Set-UserPhoto cmdlet 更新用户帐户,因为它将比 Azure AD 使用的缩略图上传到邮箱的图像质量更高。

准备工作的一个重要部分是为来宾帐户找到合适的照片。您可以向客人询问他们喜欢的照片,或者在互联网上搜索找到合适的照片。当我寻找某人的照片时,LinkedIn 是我的第一站。人们通常会在 LinkedIn 上发布一张自己的漂亮照片,即使缩小到缩略图也看起来很不错。使用 LinkedIn 图片的另一个优点是它们包含在公共个人资料中。换句话说,人们上传自己的图像,以便其他人可以看到他们的样子。因此,在将这些图像用于访客帐户时,您不太可能遇到任何版权问题。

使用 Paint 等程序可以轻松复制 LinkedIn 个人资料中的照片并保存为 JPG 文件。我使用原始尺寸保存照片(许多 LinkedIn 照片为 600 x 600 像素),并让 Azure AD 在将缩略图添加到帐户时对其进行压缩。我使用过的最大图像是144 KB;最小的(一张非常旧的 LinkedIn 图片)为 6 KB。

该脚本期望图像在指定位置可用。我用的是 c:\UserPhotos\;您可以更新脚本以将其指向您选择使用的任何位置。重要的是图像文件以访客帐户的显示名称命名。例如:

杰克琼斯.jpg

简·史密斯.jpg

[玩转系统] 如何更新 Azure AD 来宾帐户的照片

脚本处理

该脚本执行以下步骤

  • 使用 User.ReadWrite.All 权限(更新 Azure AD 帐户所需)连接到 Microsoft Graph。
  • 定义查找照片的位置。
  • 定义当访客帐户无法使用照片时要使用的默认照片。我使用一个简单的免版税人物图标(使用互联网搜索来查找您喜欢的图像)。
  • 使用Get-MgUser cmdlet 查找所有来宾帐户。
  • 某些组织将访客帐户所在的公司名称附加到显示名称中。为了标准化显示名称,脚本会检查左括号并删除附加文本(如果找到)。例如,该脚本将“Tony Redmond (Practical 365)”转换为“Tony Redmond”。如果您的组织使用不同的方法来突出显示客人所属的公司,您将需要调整此代码。
  • 对于每个访客帐户,检查库中是否有照片。如果是,请检查它是否比当前应用于帐户的照片新。该脚本在应用照片时使用自定义属性来存储时间戳,因此它会检查该照片(如果可用)和照片的时间戳,以确定是否有较新的照片可用。如果是,脚本将使用 Set-MgUserPhotoContent cmdlet 更新帐户
  • 如果该帐户从未有过照片并且有照片可用,则脚本会更新该帐户。

您可以从 GitHub 下载该脚本。请随意提出改进建议。

加快速度

获取所有来宾帐户来处理照片可能是执行缩略图初始填充的好方法。当帐户有新照片可用时,该脚本还会处理更新。例如,它将替换默认图像并将其替换为自定义图像。然而,每次处理所有来宾帐户并不是最明智的方法,除非只有几百个帐户需要处理。鉴于 Teams 的流行以及 SharePoint 使用来宾帐户与外部用户共享文档,来宾帐户的数量可能会随着时间的推移而增长。组织可能会通过 Azure AD 访问审查或编写 PowerShell 脚本来识别不活动的来宾帐户来删除一些来宾帐户,但总体而言,来宾数量预计会稳定增长。

为了加快速度,我们可以使用 Get-MgPhoto cmdlet 来检测帐户是否有照片、没有照片或使用默认照片(基于其高度),从而找到需要关注的来宾帐户和宽度(以像素为单位)。该脚本完成这项工作并生成缺少照片和具有默认照片的帐户数组。

[array]$Guests = Get-MgUser -Filter "Usertype eq 'Guest'" -All | Sort-Object DisplayName

$GuestsNoPhotos = [System.Collections.Generic.List[Object]]::new() 
[int]$GuestWithPhotos = 0
ForEach ($Guest in $Guests) {
   $Photo = Get-MgUserPhoto -UserId $Guest.Id -ErrorAction SilentlyContinue
   If ($Photo) {
      If ($Photo.Height -eq 150 -and $Photo.Width -eq 150) {
          Write-Host ("Guest account {0} has a default photo" -f $Guest.DisplayName) -foregroundcolor Yellow
          $DataLine  = [PSCustomObject] @{
            Name    = $Guest.DisplayName
            Id      = $Guest.Id
            Photo   = "Default" }
            $GuestsNoPhotos.Add($DataLine)
      } Else {
         # Write-Host ("Guest account {0} has a personalized photo" -f $Guest.DisplayName)
         $GuestsWithPhotos++
      }
   } Else {
      Write-Host ("Guest account {0} has no photo" -f $Guest.DisplayName) -foregroundcolor red
        $DataLine  = [PSCustomObject] @{
          Name    = $Guest.DisplayName
          Id      = $Guest.Id
          Photo   = "Missing" }
        $GuestsNoPhotos.Add($DataLine)
   }
}

[array]$MissingPhotos = $GuestsNoPhotos | Where-Object {$_.Photo -eq "Missing"}
[array]$DefaultPhotos = $GuestsNoPhotos | Where-Object {$_.Photo -eq "Default"}

Write-Host " "
Write-Host ("Total guest accounts                    (0}" -f $Guests.Count)
Write-Host ("Guest accounts with personalized photos {0}" -f $GuestsWithPhotos)
Write-Host ("Guest accounts with the default photo   {0}" -f $DefaultPhotos.Count)
Write-Host ("Guest accounts with missing photos      {0}" -f $MissingPhotos.Count)
Write-Host ""
Write-Host ("Please find photos for these accounts: {0}" -f ($MissingPhotos.Name -join ", "))
Write-Host ("Consider replacing the default photo with a customized image for these accounts: {0}" -f ($DefaultPhotos.Name -join ", "))

要查看需要注意的访客帐户,您可以将信息导出到 CSV 文件并使用该文件来跟踪照片的收集。当一切准备就绪后,脚本可以读取 CSV 文件并处理这些帐户,而不必获取每个访客帐户并检查具有完美照片的帐户。

用户帐户也需要照片

虽然用照片来增强访客帐户的外观固然很好,但为用户帐户提供照片更为重要。 Microsoft 365 应用在个人资料卡、电子邮件和其他位置显示用户照片。此处描述的脚本可以轻松修改以处理用户帐户的照片。如上所述,主要变化是您应该使用 Set-UserPhoto cmdlet 上传更高质量的照片。与搜索访客帐户的照片不同,查找员工的照片应该更容易,甚至可以使用组织人力资源系统的提要。至少,理论上是这样。

Active Directory 的网络安全风险管理

了解如何通过这些网络安全风险管理解决方案预防 AD 攻击并从中恢复。

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯