我使用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
将图像转换为属性?
答案 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像素,就不会出错。