Exchange 2010 PowerShell: Value.ToMB() メソッドはリモートでは失敗するが、ローカルでは動作する

Exchange 2010 PowerShell: Value.ToMB() メソッドはリモートでは失敗するが、ローカルでは動作する

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

それでも、コードの 2 番目のブロック (TotalItemSize 値を MB に変換する) は、Exchange サーバー上でローカルに実行すると完全に機能します。なぜこれがリモートでのみ失敗するのか説明できる人はいますか?

答え1

これは、Exchange が使用する .Net 型が不足している場合に発生します。PowerShell リモート処理は、一部のオブジェクトを完全な強力な型指定のオブジェクトではなく「PsObject」として終了させるシリアル化を実行します。解決策は、クライアント コンピューターに Exchange 管理コンソールをインストールすることです。これにより、必要な .Net 型が含まれます。

答え2

これを試して:

Set-ADServerSettings -ViewEntireForest $true -WarningAction SilentlyContinue

次にコマンドセットを実行します。

関連情報