Exchange 2010 PowerShell: метод Value.ToMB() не работает удаленно, но работает локально

Exchange 2010 PowerShell: метод Value.ToMB() не работает удаленно, но работает локально

Я создаю отчет по определенным атрибутам почтового ящика из Exchange Server 2010 с помощью PowerShell. Следующий код отлично работал с моей рабочей станции управления с использованием удаленного сеанса.

$Mailboxes = Get-mailbox -ResultSize Unlimited 
foreach ($Mailbox in $Mailboxes)
{
$Mailbox | Add-Member -MemberType "NoteProperty" -Name "MailboxSizeMB" -Value (Get-MailboxStatistics $Mailbox).TotalItemSize
}

Однако, когда я добавил.Значение.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». Невозможно преобразовать значение «[Mailbox Name Redacted]» типа «Deserialized.Microsoft.Exchange.Data.Directory.Management.Mailbox» в тип «Microsoft.Exchange.Configuration.Tasks.GeneralMailboxOrMailUserIdParameter». + CategoryInfo : InvalidData: (:) [Get-MailboxStatistics], ParameterBindin...mationException + FullyQualifiedErrorId : ParameterArgumentTransformationError,Get-MailboxStatistics

И все же... второй блок кода (преобразование значения TotalItemSize в МБ) отлично работает, когда я запускаю его локально на сервере Exchange. Может кто-нибудь объяснить, почему это не работает только удаленно?

решение1

Это происходит, когда вам не хватает типов .Net, используемых Exchange. PowerShell remoting выполняет некоторую сериализацию, которая приводит к тому, что некоторые объекты оказываются в виде "PsObject" вместо полного строго типизированного объекта. Решение заключается в установке консоли управления Exchange на клиентском компьютере, она будет включать необходимые типы .Net.

решение2

Попробуй это:

Set-ADServerSettings -ViewEntireForest $true -WarningAction SilentlyContinue

Затем запустите набор команд.

Связанный контент