如何使用 Powershell 设置我的帐户图片?

如何使用 Powershell 设置我的帐户图片?

我是一名 HelpDesk 支持人员。我使用的是 Windows 10、2004。我为我们公司的计算机设置了 PXE 基准。我是第一个登录新设置了 PXE 基准的计算机的人。我使用特权帐户。它没有附加“OutLook.com”帐户。它没有附加“Microsoft.com”帐户。它没有附加“Teams”帐户。它仅用于构建/设置基准的计算机。它确实存在于“AD”中,它确实存在于“SCCM”中。是的,我可以使用此帐户本地和远程登录我们网络上的任何/所有计算机。

是的,我已“手动”将图片添加到 AD 中,但它无法传播。我不明白为什么不行。将图片添加到 AD 后,是否还需要执行其他操作才能使其传播?

我可以使用在线提供的“手动点击”步骤在登录的特定计算机上“手动”创建帐户图片。这对于“一台”计算机来说很好,但不会自动传播到我稍后登录的任何其他计算机。我不希望“手动”将图片添加到我组装的每台计算机上。我正在寻找一种在 Windows 10 中“自动”执行此操作的方法,因此,需要一个 Powershell 脚本。几年前在另一家公司,我找到了一种在 Windows 7 中轻松编写此脚本的方法。我找不到该信息,并且听说该脚本不适用于 Windows 10(MS,不要破坏有效的方法)。

我搜索了数周,只找到了“如何删除默认用户图片,如何添加默认用户图片”,但没有找到如何编写脚本或设置自己的图片进行传播,而不需要“OutLook.com”或“Microsoft.com”帐户。如上所述,这是一个管理员帐户,而不是用户帐户。它存在于 AD 和 SCCM 中,但不存在于 Outlook、Teams 或 Microsoft.com 中。
有什么建议吗?

答案1

设置帐户图片需要进行两个部分:在 AD 中和本地。

在AD中设置图片

正确的方法是在 AD 域控制器上找到一个包含用户图片的文件夹:

在此处输入图片描述

有一个简单的 Set-ADUser cmdlet 可用于将用户照片导入 Active Directory。它将图像文件保存在缩略图照片Active Directory 属性。只需记住提供图像文件的准确路径和用户的名称,例如:

$ADphoto = [byte[]](Get-Content C:\AD_Photos\ad-brian-johnson -Encoding byte)
Set-ADUser BrianJ -Replace @{thumbnailPhoto=$ADphoto} 

要为多个用户完成此操作,您可以将每个照片文件重命名为用户名,并创建 Powershell 脚本来迭代该操作。由于 SuperUser 的规则规定它不是脚本编写服务,因此我不提供此类服务。

本地配置

第二部分是将照片复制到本地并配置注册表设置。图片本地存储在与 PC 上每个用户的 SID 对应的隐藏文件夹中。您可以通过 PowerShell 从 AD 或当前 Windows 会话中获取 SID:

$user_sid = [System.Security.Principal.WindowsIdentity]::GetCurrent().User.Value

照片存放位置为C:\Users\Public\AccountPictures\SID\,其中 SID 为用户真实 SID。此文件夹将包含 7 张隐藏的 jpg 格式的图片,每张对应以下分辨率之一:32、40、48、96、192、200、240、448 像素。

因此,您需要按照特定的命名约定将照片放在那里。

注册表配置

在 Windows 10 中,您可以通过注册表项设置用户帐户个人资料图片HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\用户。但是,非管理员用户没有向此注册表项添加值的必要权限。要允许没有管理员权限的用户更改个人资料图片,您必须授予他们对此注册表项的写入权限。

您可以使用 GPO 集中应用权限。

  1. 为此,运行组策略管理控制台(gpmc.msc),创建一个新策略并将其链接到具有用户计算机的 OU;
  2. 然后在 GPO 编辑器中,转到以下部分“计算机配置”->“策略”->“Windows 设置”->“安全设置”->“注册表”,并使用以下路径添加新的注册表项(添加项)机器\软件\微软\的Windows\当前版本\帐户图片\用户\帐户图片 通过 GPO 的注册表项
  3. 然后,在安全选项卡中,检查所有域用户([YourDomainName]\Users)的完全控制权限,然后单击确定;
  4. 在下一个窗口中,选择选项用可继承权限替换所有子项上的现有权限,否则用户将不具备嵌套注册表子项的任何权限。

指向照片位置的键的注册表应如下所示(对于我的用户而言): 照片位置的注册表项

使用脚本将照片绑定到个人资料

现在,要将这些 Active Directory 照片传播为 Windows 10 帐户图片,您可以使用组策略登录/注销脚本(在注销时运行脚本的 GPO)。其他选项是在任务管理器中设置计划脚本 - 这取决于您。

如上所述,您可以设置注册表项并手动放置照片以用于测试目的,但对于所有用户,这都可以使用在本地或由 GPO 触发的登录或注销时运行的 Powershell 脚本来完成。

如果您希望 GPO 运行先前在部分创建的策略中的脚本,User Configuration -> Policies -> Windows Settings -> Scripts (Logon/Logoff)请创建一个新的 PowerShell 登录脚本:

脚本名称%windir%\System32\WindowsPowerShell\v1.0\powershell.exe

脚本参数-Noninteractive -ExecutionPolicy Bypass -Noprofile -File %logonserver%\netlogon\script\SetADPicture.ps1

因此,脚本本身必须位于 ADC 的 %logonserver%\netlogon\script 处。

注意:这是用户策略,而前一个是计算机策略。这个应该适用于用户对象,而前一个适用于计算机。

最后,是脚本本身。有一些现成的脚本相当大且复杂,所以我不在这里粘贴它们。但推荐的脚本位于:http://www.classicshell.net/forum/viewtopic.php?f=12&t=7921

该脚本基本上为 C:\Users\Public\AccountPictures 中的每个分辨率编写一个文件,并在 HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AccountPicture\Users 中的注册表中创建适当的记录

相关内容