我需要批量设置多个帐户的 msExchMailboxGUID。我输入的数据来自 Powershell 命令 Get-MailboxStatistics。其中有一个包含邮箱 GUID 的对象。
我需要将该 GUID 保存到 AD 中,因此,这就是我获取对象的方法:
$thisDN = $oneUser.DistinguishedName
$user = [ADSI]"LDAP://$thisDN"
try
{
$user.get("msExchMailboxGUID")
}
catch
{
$desc = ""
}
设置对象的正确方法是什么?
我无法使用“set”或“put”来上传和保存错误。如果有人能告诉我详细的对象详细信息就更好了,因为我不知道在哪里可以找到用括号实例化的东西的详细信息[ADSI]
。
如果这只是使用 COM ADSI 对象,那么“put”的正确语法是什么?我尝试过括号、逗号,但无法让 Powershell 处理 COM。
答案1
继续你的例子,这将有效:
$guid = $user.get("msExchMailboxGUID")
$thisDN2 = $twoUser.DistinguishedName
$user2 = [ADSI]"LDAP://$thisDN2"
$user2.put('msExchMailboxGUID', @($guid))
$user2.setinfo()
答案2
如果 Google 引导其他人到这里,这是最简单的方法。这需要 RSAT 附带的 Active Directory PowerShell 模块。看这里了解有关安装的更多信息。
Active Directory 将 GUID 存储为字节数组,因此为了设置它,我们需要将 GUID 字符串转换为字节数组。
Import-Module ActiveDirectory
set-aduser jim.bob -Replace @{msExchMailboxGuid=$([System.Guid]"f750b85a-ebae-48ec-9add-2224df22000a").ToByteArray()}
将上述示例中的用户名和 GUID 替换为您自己的值。