首先,我已经涉足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中存在的对象?
答案 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.