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 версия. Может кому-то пригодится.