Exchange 2010 PowerShell: Die Methode Value.ToMB() schlägt remote fehl, funktioniert aber lokal

Exchange 2010 PowerShell: Die Methode Value.ToMB() schlägt remote fehl, funktioniert aber lokal

Ich erstelle mithilfe von PowerShell einen Bericht über bestimmte Postfachattribute von Exchange Server 2010. Der folgende Code funktionierte von meiner Verwaltungsarbeitsstation aus über eine Remotesitzung einwandfrei.

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

Als ich jedoch die.Wert.ToMb()Methode zum Attribut TotalItemSize hinzufügte, schlug das Skript mit dem folgenden Fehler fehl:

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

Sie können keine Methode für einen Ausdruck mit dem Wert Null aufrufen. In Zeile:6 Zeichen:6 + $Mailbox | Add-Member -MemberType "NoteProperty" -Name "MailboxSizeMB" -Val ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull

Argumenttransformation für Parameter „Identity“ kann nicht verarbeitet werden. Der Wert „[Mailbox Name Redacted]“ vom Typ „Deserialized.Microsoft.Exchange.Data.Directory.Management.Mailbox“ kann nicht in den Typ „Microsoft.Exchange.Configuration.Tasks.GeneralMailboxOrMailUserIdParameter“ konvertiert werden. + CategoryInfo: InvalidData: (:) [Get-MailboxStatistics], ParameterBindin...mationException + FullyQualifiedErrorId: ParameterArgumentTransformationError,Get-MailboxStatistics

Und dennoch... der zweite Codeblock (Konvertierung des TotalItemSize-Werts in MB) funktioniert einwandfrei, wenn ich ihn lokal auf dem Exchange-Server ausführe. Kann mir jemand erklären, warum dies nur remote fehlschlägt?

Antwort1

Dies passiert, wenn Ihnen die von Exchange verwendeten .Net-Typen fehlen. PowerShell-Remoting führt eine Serialisierung durch, die dazu führt, dass einige Objekte als „PsObject“ statt als vollständig stark typisierte Objekte enden. Die Lösung besteht darin, die Exchange-Verwaltungskonsole auf Ihrem Clientcomputer zu installieren. Diese enthält die von Ihnen benötigten .Net-Typen.

Antwort2

Versuche dies:

Set-ADServerSettings -ViewEntireForest $true -WarningAction SilentlyContinue

Führen Sie dann den Befehlssatz aus.

verwandte Informationen