모든 Exchange 2003 사서함을 크기별로 출력하는 powershell 스크립트가 있습니다.PowerShell을 사용하여 GUID 문자열을 octetBytes로 변환
$computers = "vexch01","vexch02"
foreach ($computer in $computers) {
Get-Wmiobject -namespace root\MicrosoftExchangeV2 -class Exchange_Mailbox -computer $computer | sort-object -desc Size | select-object MailboxDisplayName,StoreName,@{Name="Size/Mb";Expression={[math]::round(($_.Size/1024),2)}}, MailboxGUID | Export-Csv -notype -Path $computer.csv
}
현재이 문자열 타입 GUID는 MailboxGuid로 출력한다 (예를 들어, {21EC2020-3AEA - 1,069 - - A2DD 08002B30309D}). 나는 이것으로 AD에서 사용자를 찾고 싶지만 AD는 그것을 octetBytes 형식으로 저장합니다.
나는 중괄호를 제거 할 때만 변환을 수행 할 일부 powershell functions을 발견했습니다. Guid.ToString 메서드가이 메서드를 제공해야하지만 위의 메서드는 작동하지 않습니다.
그러나 어떻게해야하는지 알 수 있다면 Guid.ToByteArray 메서드를 사용하면 더 가까워 질 수 있습니다.
누구나 이것을 해킹 했습니까?
업데이트 : 지금까지 답변을 통해 LDAP를 통해 올바른 형식으로 mailboxguid를 변환하는 기능을 작성하는 데 도움이되었습니다. 그러나 이제 스크립트에서이 작업을 수행 할 수 없습니다. 작동하지 않는 @{Name="LDAP Guid";Expression={ConvertGuidToLdapSearchString(MailboxGUID)}}
으로 select-object
에서 함수를 사용하는 이유를 잘 모르겠어요
function ConvertGuidToLdapSearchString(
[parameter(mandatory=$true, position=0)]$Guid
)
{
$guid_object = [System.Guid]$Guid
($guid_object.ToByteArray() | foreach { '\' + $_.ToString('x2') }) -join ''
}
# Gets data through WMI from specified Exchange mailbox servers
$servers = "vexch01","vexch02"
foreach ($server in $servers) {
Get-Wmiobject -namespace root\MicrosoftExchangeV2 -class Exchange_Mailbox -computer $computer | sort-object -desc Size | select-object MailboxDisplayName,StoreName,@{Name="Size/Mb";Expression={[math]::round(($_.Size/1024),2)}}, @{Name="LDAP Guid";Expression={ConvertGuidToLdapSearchString(MailboxGUID)}} | Export-Csv -notype -Path $server.csv
}
: 이것은 내 업데이트 스크립트입니다.
문자열을 줄 수있는 select-object
에이 함수를 사용하는 다른 방법이 있습니까?
자세한 내용은 내 대답이 업데이트되었습니다. – OldFart