Powershell 自定义列使用某些 cmdlet 返回空值
Powershell Custom column returning empty value with certain cmdlets
使用 get-mailbox cmdlet 添加自定义列时,我得到一个空值。
我正在尝试在 get-mailbox cmdlet 上使用 select @{} 添加自定义列。无论我尝试什么,结果始终是一个空值,我更改了原始 cmdlet 并将其替换为 get-process 然后它确实起作用了。
我什至尝试过明确提供用户名而不依赖于管道变量,但它没有用。
get-mailbox <username> | select name, @{name="size"; expression={Get-MailboxStatistics $_.samaccountname | select -ExpandProperty TotalItemSize}}
在此先感谢您的帮助。
编辑 1: 我的问题与 不同的原因,因为在提到的问题中,该人从他们的自定义列中获得了一些结果,只是他们在一列上的一行上遇到问题,我什至没有在第二行或第三行上得到结果。
编辑 2: 我知道我可以创建自己的对象,但我试图不必这样做,上面的代码应该可以工作(至少在完美世界中) .这也是我不直接管道的原因,我会的,但我试图用尽可能少的代码提出我的问题,以使社区更容易复制它并剖析它,我想要的实际代码 运行是这个
get-mailbox <username> | Get-MailboxStatistics | select displayname,TotalItemSize,@{name="Archive size";expression={Get-MailboxStatistics $_.samaccountname -archive | select -ExpandProperty TotalItemSize}}
我的最终目标是获得一个 table 用户列表以及他们的邮箱大小和存档大小。
编辑 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-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-mailbox cmdlet 添加自定义列时,我得到一个空值。
我正在尝试在 get-mailbox cmdlet 上使用 select @{} 添加自定义列。无论我尝试什么,结果始终是一个空值,我更改了原始 cmdlet 并将其替换为 get-process 然后它确实起作用了。 我什至尝试过明确提供用户名而不依赖于管道变量,但它没有用。
get-mailbox <username> | select name, @{name="size"; expression={Get-MailboxStatistics $_.samaccountname | select -ExpandProperty TotalItemSize}}
在此先感谢您的帮助。
编辑 1: 我的问题与
编辑 2: 我知道我可以创建自己的对象,但我试图不必这样做,上面的代码应该可以工作(至少在完美世界中) .这也是我不直接管道的原因,我会的,但我试图用尽可能少的代码提出我的问题,以使社区更容易复制它并剖析它,我想要的实际代码 运行是这个
get-mailbox <username> | Get-MailboxStatistics | select displayname,TotalItemSize,@{name="Archive size";expression={Get-MailboxStatistics $_.samaccountname -archive | select -ExpandProperty TotalItemSize}}
我的最终目标是获得一个 table 用户列表以及他们的邮箱大小和存档大小。
编辑 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-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}}