使用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
- ArrayList
,thumbnailPhoto
- Byte[]
如何使用System.Drawing.Bitmap
将ArrayList
转换为Byte[]
和PowerShell GUI
,使用Set-ADUser
将图像转换为属性?
要从图片框中获取图像数据(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像素,则不会出错。