我正在使用PowerShell生成Exchange Server 2010中某些邮箱属性的报告。 以下代码使用远程会话从我的pipe理工作站完美地工作。
$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()) }
您无法在空值expression式上调用方法。 在行:6 char:6 + $邮箱| 添加成员-MemberType“NoteProperty” – 名称“MailboxSizeMB”-Val … + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜 CategoryInfo:InvalidOperation:(:) [],RuntimeException + FullyQualifiedErrorId:InvokeMethodOnNull
无法处理参数“标识”的参数转换。 无法将types“Deserialized.Microsoft.Exchange.Data.Directory.Management.Mailbox”的“[邮箱名称编辑]”的值转换为键入“Microsoft.Exchange.Configuration.Tasks.GeneralMailboxOrMailUserIdParameter”。 + CategoryInfo:InvalidData:(:) [Get-MailboxStatistics],ParameterBindin … mationException + FullyQualifiedErrorId:ParameterArgumentTransformationError,Get-MailboxStatistics
然而,第二个代码块(将TotalItemSize的值转换为MB)在Exchange服务器上本地运行时非常有效。 谁能解释为什么这只能远程失败?
当您错过Exchange使用的.Nettypes时,会发生这种情况。 PowerShell远程执行一些序列化,使一些对象最终成为“PsObject”而不是完整的强types对象。 解决scheme是在客户端计算机上安装Exchangepipe理控制台,这将包括您需要的.Nettypes。
尝试这个:
Set-ADServerSettings -ViewEntireForest $true -WarningAction SilentlyContinue
然后运行命令集。