изменение эскизов массовых профилей в Active Directory - PullRequest
0 голосов
/ 02 июля 2018
$l = import-csv -path "C:\art1\user.csv"

Foreach ($name in $l)
    {
        $photo = [byte[]](Get-Content "C:\Art\rem\$name.jpg" -Encoding byte) 
        Set-ADUser $name -Replace @{thumbnailPhoto=$photo}
    }

Я пытался импортировать массовые уменьшенные изображения в профили активного каталога. но приведенный выше код продолжает выдавать ошибку.

Может кто-нибудь помочь и сообщить мне, где я иду не так?

Get-Content: не удается найти путь 'C: \ Art \ rem \ @ {xxx.abc = yyy.abc} .jpg', так как он не существует.
В X: \ NewUser \ ProfilePic.ps1: 5 символов: 31
+ ... $ photo = [byte []] (Get-Content "C: \ Art \ rem \ $ name.jpg" -байт кодирования)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo: ObjectNotFound: (C: \ Art \ rem \ @ {xxx.abc = yyy.abc} .jpg: строка) [Get-Content], ItemNotFoundException
+ FullyQualifiedErrorId: PathNotFound, Microsoft.PowerShell.Commands.GetContentCommand

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Теперь я дам вам способ, которым я делаю это в моей среде.

# Set the network path of the user pictures.
$NetworkPath = "\\FileServer\UserPictures"

# Get all the filesnames without the extension, every picture inside this folder should be named after the username of the user.
$UsersNames = Get-ChildItem -Path "$NetworkPath"| % {$_.BaseName}

# For each file name (username) go and convert into digital (byte encoding) the file then store it in a temporary value ($Photo).
# Then update the users jpegPhoto attribute on Active Directory with the $photo
foreach ($User in $UsersNames){
    $Photo = [Byte[]](Get-Content "$NetworkPath\$User.jpg" -Encoding Byte)
    Set-ADUser $User -Replace @{jpegPhoto=$Photo}
}

Извините за мой предыдущий ответ, было ошибкой не садиться и писать правильный ответ. Спасибо ребята за комментарии.

0 голосов
/ 02 июля 2018

Пояснение:

@{xxx.abc=yyy.abc} указывает, что ошибка связана со структурой ваших данных. Из-за того, что вы используете Import-Csv PowerShell интерпретирует первую строку вашего файла (которая xxx.abc) как заголовок.

Вам необходимо убедиться, что вы используете правильную команду для формата данных, которые у вас есть. Если вы хотите, чтобы это было .csv, первая строка должна быть именем заголовка (давайте возьмем fullname в качестве примера). В этом случае вы получите доступ к своим данным, используя $($name.fullname).

Решение:

Более подходящим и быстрым решением было бы просто использовать Get-Content вместо Import-Csv.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...