如何替换所有 Active Directory 帐户照片?

问题描述 投票:0回答:3

我有一个 powershell 脚本来替换单张照片:

Import-Module ActiveDirectory
$photo = [byte[]](Get-Content C:\scripts\foto\XXX.jpg -Encoding byte)
Set-ADUser XXX -Replace @{thumbnailPhoto=$photo}

我有一个文本文件,其中包含帐户的用户名:

罗布·艾伦·科伊·格雷戈尔

我想自动替换 Active Directory 中的所有照片。我该怎么做?

powershell active-directory
3个回答
1
投票

如果您想替换所有用户照片以执行类似这样的操作,我建议您:

Get-ADUser | Where-Object { Test-Path "C:\scripts\foto\$($_.SamAccountName).jpg" } | Set-ADUser -Replace @{thumbnailPhoto=(Get-Content "C:\scripts\foto\$($_.SamAccountName).jpg" -Encoding byte)}

虽然未经测试。这应该为所有用户设置照片,其中图片及其用户名存在于路径中。


0
投票

我无法理解足寄这句可能是对的俏皮话。这里它被逐行分解为 foreach 循环。

$users = get-adUser
foreach ($user in $users){
   $photoPath = "C:\scripts\foto\$($_.SamAccountName).jpg"
   if (Test-Path $photoPath ) {
       $photo = Get-Content "C:\scripts\foto\$($user.SamAccountName).jpg" -Encoding byte
       Set-ADUser $user -Replace @{thumbnailPhoto=$photo}
   }
}

0
投票

我认为这样好一点:

Import-Module ActiveDirectory
$users = Get-ADUser -Filter *
foreach ($user in $users){
$photoPath = "C:\foto\$($user.SamAccountName).jpg"
if (Test-Path $photoPath ) {
$photo = Get-Content "C:\foto\$($user.SamAccountName).jpg" -Encoding byte
Set-ADUser $user -Replace @{thumbnailPhoto=([byte[]]$photo)}
Write-Host 'Foto was set for:' $user.SamAccountName}}

附注 以 Eric 的代码为基础。

© www.soinside.com 2019 - 2024. All rights reserved.