2017-09-01 3 views
1

Erstens habe ich mit PowerShell versucht, aber würde mich nicht mehr als einfache Befehle fließend nennen.PowerShell mit Objekt nach anderen Rohren

Ich versuche, ein Objekt aus dem ersten Cmdlet zu verwenden, in dem sich einige Pipes befinden.

Dies ist der Befehl, ich habe dies von View Mailbox Sizes and Mailbox Quotas Using Windows PowerShell, es funktioniert.

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 

I dieser die eingestellte Quote für die Postfächer hinzufügen bin zu wollen, die zurückgegeben werden, werden die Objekte genannt ProhibitSendQuota, ProhibitReceiveQuota und IssueWarningQuota. Wenn ich diese Objekte zur Select-Pipe hinzufüge, kommt der Name heraus, aber nicht der Wert. Ich bin in der Lage, die Werte zu erhalten, wenn ich den Befehl

Get-Mailbox | Select ProhibitSendQuota,ProhibitReceiveQuota,IssueWarningQuota 

Wenn ich den Befehl

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

Keines der Objekte aus der Cmdlets Get-Mailbox verwenden, verwenden war angezeigt, nur die Objekte aus Die Get-MailboxStatistics sind vorhanden.

Meine Frage ist dann, wie kann ich ein Objekt verwenden, das in dem Get-Mailbox-Cmdlet existiert, nachdem alle anderen Pipes und Cmdlets hinzugefügt worden sind?

Antwort

1

Variablen verwenden. PowerShell ist eine Programmiersprache wie jede andere auch. Lassen Sie sich nicht von One-Linern für alles hängen, weil Sie nicht müssen. Das Select * am Ende von CmdLet zu tun, ist dasselbe wie nicht, aber konvertiert nur den Rückgabetyp von dem, was der CmdLet zu einem PSCustomObject macht.

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

Wenn Sie wirklich auf der Beibehaltung der Variable im Rahmen der Pipeline darauf bestanden, verwenden PipelineVariable.

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

Further information about PipelineVariable

+0

Ich versuchte PipelineVariable jedoch nicht verfügbar, habe ich auf jeden Fall zu sein scheint $ Mailbox. Ich habe beim Filtern auf eine einzelne Identität gefunden, dass der Wert herauskommt, aber sobald ich die -Identity entferne und alle Postfächer zurückgeben will, ist das ProhibitSendQuota (ich konzentriere mich gerade auf diese Spalte) leer. – Lima