Я создаю сообщение об определенных атрибутах почтового ящика с 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
}
Однако, когда я добавил.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())
}
Вы не можете назвать метод по выражению с пустым знаком. В line:6 char:6 + $Mailbox | добавлять-участник-MemberType "NoteProperty" - "MailboxSizeMB" - Val Имени... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo: InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId: InvokeMethodOnNull
Не может обработать преобразование аргумента на параметре 'Идентификационные данные'. Не может преобразовать" [Имя Почтового ящика, Отредактированное]" значение типа, "Десериализованного. Microsoft. Exchange. Данные. Каталог. Управление. Почтовый ящик" для ввода "Microsoft. Exchange. Конфигурация. Задачи. GeneralMailboxOrMailUserIdParameter". + CategoryInfo: InvalidData: (:) [Доберитесь-MailboxStatistics], ParameterBindin... mationException + FullyQualifiedErrorId: ParameterArgumentTransformationError, Добраться-MailboxStatistics
И все же... второй блок кода (преобразовывающий TotalItemSize оценивают МБ), работы отлично, когда я выполняю его локально на Exchange Server. Кто-либо может объяснить, почему это только перестало работать удаленно?
Это происходит, когда вам не хватает типов .Net, используемых Exchange. Удаленное взаимодействие PowerShell выполняет некоторую сериализацию, в результате чего некоторые объекты превращаются в «PsObject» вместо полностью строго типизированного объекта. Решение состоит в том, чтобы установить консоль управления Exchange на ваш клиентский компьютер, она будет включать нужные вам типы .Net.
Попробуйте следующее:
Set-ADServerSettings -ViewEntireForest $true -WarningAction SilentlyContinue
Затем запустите набор команд.