【问题标题】:Powershell Custom column returning empty value with certain cmdlets使用某些 cmdlet 返回空值的 Powershell 自定义列
【发布时间】:2019-05-23 20:43:13
【问题描述】:

使用 get-mailbox cmdlet 添加自定义列时,我得到一个空值。

我正在尝试使用 get-mailbox cmdlet 上的 select @{} 添加自定义列。无论我尝试什么,结果总是一个空值,我更改了原始 cmdlet 并将其替换为 say get-process ,然后它确实起作用了。 我什至尝试过显式提供用户名而不依赖管道变量,但它不起作用。

get-mailbox <username> | select name, @{name="size"; expression={Get-MailboxStatistics $_.samaccountname | select -ExpandProperty TotalItemSize}}

提前感谢您的帮助。

编辑 1: 我的问题与 Powershell script with Get-Mailbox and Get-MailboxStatistics missing output 不同的原因,正如在提到的问题中,该人从他们的自定义列中获得了一些结果,只是他们在一行中遇到了问题在一列上,我什至在第二行或第三行都没有得到结果。

编辑 2: 我知道我可以创建自己的对象,但我试图不必这样做,上面的代码应该可以工作(至少在一个完美的世界中)。也是我不直接管道的原因,我会,但我试图用尽可能少的代码提出我的问题,以使社区更容易复制和剖析它,我想要运行的实际代码是这个

get-mailbox <username> | Get-MailboxStatistics | select displayname,TotalItemSize,@{name="Archive size";expression={Get-MailboxStatistics $_.samaccountname -archive | select -ExpandProperty TotalItemSize}}

我的最终目标是获得一个表格,其中包含用户的邮箱大小和存档大小的列表。

编辑 3:没关系,我尝试创建自己的对象,但同样的问题仍然存在。提供了我用于该对象的代码。

 get-mailbox <username> | foreach {[pscustomobject]@{name = $_.name; "mailbox size" = Get-MailboxStatistics $_.samaccountname | select -expand TotalItemSize; "Archive size" = Get-MailboxStatistics $_.samaccountname -archive | select -expand TotalItemSize}}

再次感谢!

【问题讨论】:

  • 如果您将Get-MailboxStatistics 的输出保存到$Var,您会看到TotalItemSize 属性吗?
  • @Lee_Dailey 是的,有一个 TotalItemSize 属性。
  • @LotPings 可能相似,但我认为不一样,因为 1. 似乎在那里他们能够获取自定义列,一个自定义列中的行中只有一个值是空白的。对我来说,自定义列永远不会返回任何值。
  • 到目前为止我看到的所有示例要么将Get-Mailbox 传递给Get-MailboxStatistics,要么显式使用参数名称-Identity

标签: powershell exchange-server powershell-2.0 exchange-server-2010


【解决方案1】:

知道了。您的代码如下所示:

get-mailbox <username> | Get-MailboxStatistics | select displayname,TotalItemSize,@{name="Archive size";expression={Get-MailboxStatistics $_.samaccountname -archive | select -ExpandProperty TotalItemSize}}

有一个错误。您的表达式包括对samaccountname 的引用,它在Get-Mailbox 输出中但不在Get-MailboxStatistics 输出中,因此您正在查询一个空邮箱。要解决此问题,请使用 displayName 属性查询存档邮箱。

get-mailbox <username> | Get-MailboxStatistics | select displayname,TotalItemSize,@{name="Archive size";expression={Get-MailboxStatistics $_.displayname -archive | select -ExpandProperty TotalItemSize}}

【讨论】:

  • 您的代码有效。谢谢!澄清一下,如果您查看我的第一个代码,您会发现我没有从 get-mailboxstatistics 引用 samaccountname,因为它不在管道中,而且它仍然不起作用。为什么? (你对我的第二个代码是对的)
  • 没关系,我现在看到你评论说第一个代码对你有用。
  • 为什么如果我在自定义列表达式中明确引用邮箱不起作用?例如get-mailbox johndoe | select name,@{n="size";e={Get-MailboxStatistics "johndoe" | select TotalItemSize}}
  • 没关系,我只是在实际服务器上进行了本地测试,它确实可以工作,所以问题出在我的 powershell 上,或者问题出在 exchange 如何与远程 powershell 通信。再次感谢您的帮助。
猜你喜欢
  • 2013-04-26
  • 1970-01-01
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
  • 1970-01-01
相关资源
最近更新 更多