![Exchange 2010 PowerShell: Value.ToMB() 메서드가 원격에서는 실패하지만 로컬에서는 작동합니다.](https://rvso.com/image/658716/Exchange%202010%20PowerShell%3A%20Value.ToMB()%20%EB%A9%94%EC%84%9C%EB%93%9C%EA%B0%80%20%EC%9B%90%EA%B2%A9%EC%97%90%EC%84%9C%EB%8A%94%20%EC%8B%A4%ED%8C%A8%ED%95%98%EC%A7%80%EB%A7%8C%20%EB%A1%9C%EC%BB%AC%EC%97%90%EC%84%9C%EB%8A%94%20%EC%9E%91%EB%8F%99%ED%95%A9%EB%8B%88%EB%8B%A4..png)
PowerShell을 사용하여 Exchange Server 2010에서 특정 사서함 특성에 대한 보고서를 작성하고 있습니다. 다음 코드는 원격 세션을 사용하여 관리 워크스테이션에서 완벽하게 작동했습니다.
$Mailboxes = Get-mailbox -ResultSize Unlimited
foreach ($Mailbox in $Mailboxes)
{
$Mailbox | Add-Member -MemberType "NoteProperty" -Name "MailboxSizeMB" -Value (Get-MailboxStatistics $Mailbox).TotalItemSize
}
그러나 내가 추가했을 때.Value.ToMb()TotalItemSize 속성에 대한 메서드를 사용하는 동안 다음 오류로 인해 스크립트가 실패했습니다.
$Mailboxes = Get-mailbox -ResultSize Unlimited
foreach ($Mailbox in $Mailboxes)
{
$Mailbox | Add-Member -MemberType "NoteProperty" -Name "MailboxSizeMB" -Value ((Get-MailboxStatistics $Mailbox).TotalItemSize.Value.ToMb())
}
Null 값 식에서는 메서드를 호출할 수 없습니다. 줄:6자:6 + $Mailbox | Add-Member -MemberType "NoteProperty" -Name "MailboxSizeMB" -Val ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: InvokeMethodOnNull
매개변수 'Identity'에 대한 인수 변환을 처리할 수 없습니다. "Deserialized.Microsoft.Exchange.Data.Directory.Management.Mailbox" 유형의 "[Mailbox Name Redacted]" 값을 "Microsoft.Exchange.Configuration.Tasks.GeneralMailboxOrMailUserIdParameter" 유형으로 변환할 수 없습니다. + CategoryInfo: InvalidData: (:) [Get-MailboxStatistics], ParameterBindin...mationException + FullyQualifiedErrorId: ParameterArgumentTransformationError,Get-MailboxStatistics
그럼에도 불구하고 두 번째 코드 블록(TotalItemSize 값을 MB로 변환)은 Exchange 서버에서 로컬로 실행할 때 완벽하게 작동합니다. 왜 이것이 원격으로만 실패하는지 설명할 수 있습니까?
답변1
이는 Exchange에서 사용하는 .Net 유형이 누락된 경우 발생합니다. PowerShell 원격은 일부 개체를 전체 강력한 형식의 개체 대신 "PsObject"로 만드는 일부 직렬화를 수행합니다. 해결 방법은 클라이언트 컴퓨터에 Exchange 관리 콘솔을 설치하는 것입니다. 여기에는 필요한 .Net 유형이 포함됩니다.
답변2
이 시도:
Set-ADServerSettings -ViewEntireForest $true -WarningAction SilentlyContinue
그런 다음 명령 세트를 실행하십시오.