PSスクリプトの1つを、ネイティブツールではなく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
ExchangePSによると。ですから、それは近いですが、完全には正しくありません。
サブストリングプロシージャを使用して値を正しい値に変換する関数を作成しました。
適切な値を返すためのより良い/より効率的な方法はありますか?
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