如何使用PowerShell GUI在用户jpegPhoto和thumbnailPhoto的属性中插入图片?

时间:2019-04-15 08:55:15

标签: powershell user-interface

我使用PowerShell GUI做一个简单的表单来更改AD中用户的照片。

将照片上传到picturebox

    $imgFile = (get-item 'd:\Foto\testUser.jpg')
    $picturebox.Image = [System.Drawing.Image]::Fromfile($imgFile)

$picturebox.Image的类型:

    > Write-Host $picturebox.Image.GetType()
    System.Drawing.Bitmap

必需的属性是以下类型: jpegPhoto-ArrayListthumbnailPhoto-Byte[]

如何使用System.Drawing.BitmapArrayList转换为Byte[]PowerShell GUI以使用Set-ADUser将图像转换为属性?

1 个答案:

答案 0 :(得分:0)

要从图片框获取(jpeg格式)字节数组的图像数据:

$stream = New-Object System.IO.MemoryStream
$picturebox.Image.Save($stream, [System.Drawing.Imaging.ImageFormat]::Jpeg) | Out-Null
[byte[]]$pictureData = $stream.ToArray()
$stream.Dispose()

使用此字节数组,可以使用Set-ADUser cmdlet添加thumbnailPhoto

try {
    # $User here is an AD User object you get using the Get-ADUSer cmdlet
    $User | Set-ADUser -Replace @{thumbnailPhoto = $pictureData } -ErrorAction Stop
}
catch {
    Write-Error $_.Exception.Message
}

注意:对于thumbnailPhoto属性,图像数据的最大大小为 100KB(102400字节)
通常,如果您确保图像约为96x96像素,就不会出错。