PowerShell在其他管道之后使用对象

时间:2017-09-01 02:32:39

标签: powershell exchange-server-2010

首先,我已经涉足PowerShell,但除了简单的命令之外,我不会说自己更流利。

我想要实现的是使用第一个cmdlet中的对象,此命令中有几个管道。

这是命令,我从View Mailbox Sizes and Mailbox Quotas Using Windows PowerShell得到了它,它有效。

Get-Mailbox -ResultSize Unlimited | Get-MailboxStatistics | where {$_.StorageLimitStatus -notlike "BelowLimit*"} | Select DisplayName,StorageLimitStatus,@{name="TotalItemSize (MB)";expression={[math]::Round((($_.TotalItemSize.Value.ToString()).Split("(")[1].Split(" ")[0].Replace(",","")/1MB),2)}},@{name="TotalDeletedItemSize (MB)";expression={[math]::Round((($_.TotalDeletedItemSize.Value.ToString()).Split("(")[1].Split(" ")[0].Replace(",","")/1MB),2)}},ItemCount,DeletedItemCount | Sort "TotalItemSize (MB)" -Descending | Export-CSV "C:\My Documents\Exceeded Quotas.csv" -NoTypeInformation

我想要为返回的邮箱添加设置配额,这些对象名为ProhibitSendQuota,ProhibitReceiveQuota和IssueWarningQuota。当我将这些对象添加到选择管道时,名称出现但不是值。如果我要使用命令

,我可以获取值
Get-Mailbox | Select ProhibitSendQuota,ProhibitReceiveQuota,IssueWarningQuota

当我使用命令

Get-Mailbox -Identity domain\user | Select Identity,ProhibitSentQuota | Get-MailboxStatistics | Select *

不会显示Get-Mailbox cmdlet中的任何对象,只会显示Get-MailboxStatistics中的对象。

我的问题是,在添加了所有其他管道和cmdlet之后,如何使用Get-Mailbox cmdlet中存在的对象?

1 个答案:

答案 0 :(得分:1)

使用变量。 PowerShell是一种与其他语言一样的编程语言。不要因为你没必要而使用单行代码。另外,在CmdLet的末尾执行Select *与没有它的情况相同,只是将返回类型从CmdLet转换为PSCustomObject

$MailBox = Get-Mailbox -Identity "domain\user"
$MailBox | Select-Object Identity, ProhibitSentQuota | Get-MailboxStatistics

如果您真的坚持将变量保留在管道的上下文中,请使用PipelineVariable

Get-MailBox -Identity "domain\user" -PipelineVariable MailBox #Now mailbox is available for use further in the pipeline.

Further information about PipelineVariable