Cкрипт для массовой загрузки-ресайза фотографий.
Выполнять в консоли PShell exchange
[PS] C:\Windows\system32>cd C:\photos [PS] C:\photos>.\BatchConverter.ps1 -InputFolder .\Input -OutputFolder .\Output Converting C:\photos\Input\ivanov.jpg USER ivanov [PS] C:\photos>
Что делает скрипт:
Ищет файлы с расширением =».jpg»,».jpeg»,».bmp»,».tif»,».tiff»,».gif»,».png» по пути C:\photos\input (Имя файла == логину пользователя)
Ресайзит их до размера 96*96 пикселей (Максимальный размер для AD)
Загружает фото в AD
param($InputFolder,$OutputFolder,$Quality);
if (!$InputFolder -or !$OutputFolder)
{
throw "НЕ введены параметры инпут-оутпут папок";
}
if (!(Test-Path $InputFolder))
{
throw "InputFolder нет папки";
}
if (!(Test-Path $OutputFolder))
{
throw "OutputFolder нет папки";
}
$FullOutputFolderPath = (Get-Item $OutputFolder).FullName
if (!$Quality)
{
$Quality = 100;
}
$Items = Get-ChildItem $InputFolder
if ($Items.Count -eq 0)
{
throw "No items in folder"
}
[array]$ValidExt=".jpg",".jpeg",".bmp",".tif",".tiff",".gif",".png"
foreach ($Item in $Items)
{
if ($ValidExt -contains $Item.Extension)
{
Write-Output "Converting $($Item.FullName)"
.\convert.exe -quality $Quality -depth 8 -strip -thumbnail 96x96^ -gravity Center -crop 96x96+0+0 $Item.FullName "$($FullOutputFolderPath)\$($Item.BaseName).jpg"
Write-Output "USER $($Item.BaseName)"
Import-RecipientDataProperty -Identity "$($Item.BaseName)" -Picture -FileData ([Byte[]]$(Get-Content -Path "$($FullOutputFolderPath)\$($Item.BaseName).jpg" -Encoding Byte -ReadCount 0))
}
}
if (!$InputFolder -or !$InputFolder) — WTF!? ))))
🙂 THIS IS KOSYAAAAK! 🙂 Конечно жеж if (!$InputFolder -or !$OutputFolder)
Коллега, а что это за загадочный convert.exe который должен лежать в рабочей папке? Какая-то сторонняя утилита, о который Вы забыли упомянуть? 🙂
http://www.imagemagick.org/script/binary-releases.php#windows — Convert.exe берётся вот отсюда, есть portable версия. Может кому-то пригодится.