0

我正在尝试将我的一个 PS 脚本转换为使用 Quest AD 而不是本机工具查询 AD 以加快处理速度。

在我的测试过程中,我得出的结论是 msExchMailboxGuid 属性以我需要转换的格式返回。

这是我正在运行的测试命令:

$LDAPQuery = "(&(HomeMDB=*)(objectClass=user))"
$OUPath = "OU=users,DC=domain,DC=com"

$SearchResults = Get-QadUser -LdapFilter $LDAPQuery -SearchRoot $OUPath -ShowProgress -SizeLimit 1 -IncludedProperties "msExchMailboxGuid"

msExchMailboxGuid 值返回如下:

[PS] C:\Users\sysadmin>$SearchResults | Select msExchMailboxGuid

msExchMailboxGuid
-----------------
35CAF894943052409B77F30A6F8D40B4

如果我运行它,它会返回:

[PS] C:\Users\sysadmin>[guid]"35CAF894943052409B77F30A6F8D40B4"

Guid
----
35caf894-9430-5240-9b77-f30a6f8d40b4

但我知道这个用户的 msExchMailboxGuid 实际上是这样的:

94f8ca35-3094-4052-9b77-f30a6f8d40b4

根据交易所 PS。所以它很接近但并不完全正确。

我编写了一个函数,它使用子字符串过程将值转换为正确的值。

有没有更好/更有效的方法来返回正确的值?

Function Convert-msExchMailboxGuid
{
    param
    (
        $RawGuid
    )

    $ConvertedGuid = $RawGuid.SubString(6,2) + $RawGuid.SubString(4,2) + $RawGuid.SubString(2,2) + $RawGuid.SubString(0,2) + $RawGuid.SubString(10,2) + $RawGuid.SubString(8,2) + $RawGuid.SubString(14,2) + $RawGuid.SubString(12,2) + $RawGuid.SubString(16)

    return ([guid]$ConvertedGuid).ToString()
}

这工作正常,但我希望这可以以更简单的方式实现:

[PS] C:\Users\sysadmin>Convert-msExchMailboxGuid -RawGuid "35CAF894943052409B77F30A6F8D40B4"
94f8ca35-3094-4052-9b77-f30a6f8d40b4
4

1 回答 1

0

我尝试了除此之外的几个步骤,即使在 Get-QADUser 命令后面使用某些参数,其余的也明显比我现有的脚本慢。所以我会把这个留在这里,以防有人想使用我的函数来转换 GUID,但我不再对答案感兴趣了。

于 2012-09-29T13:23:45.890 回答