Benutzer mit den meisten Antworten
Deserialized Objekte sortieren

Frage
-
Guten Morgen Forum,
ich würde gerne von einer importierten Remote-Session aus die 20 grössten Postfächer auf dem Exchange-Server abrufen.
Dazu nutze ich folgenden Befehl:get-mailbox|Get-MailboxStatistics` |Select-object DisplayName,ItemCount,StorageLimitStatus,TotalItemSize` |Sort-Object TotalItemsize -Descending` |Select-Object -First 20
Das funktioniert leider nicht, da die zurückgegebenen Objekte ja "Deserialized" sind
und somit die Sortierung von "Sort-Object" Unfug ergibt.Selbstverständlich kann ich mich via RDP auf dem Exchange einloggen und den Befehl
auf der Powershell dort ausführen, aber das ist ja konträr zu der eigentlichen
PsRemote-Idee.Freilich könnte man an dem String, den TotalItemSize zurückliefert, solange "rumbasteln"
bis ein Wert dabei herauskommt, der sich sortieren lässt, aber da muss es doch noch eine
elegantere Lösung geben...Hätte da jemand einen Ansatz für mich?
Vielen Dank.
Thomas
- Bearbeitet Thomas_Fey Mittwoch, 13. November 2013 10:23 Fipptehler
Antworten
-
Da kommst du an Textverarbeitung nicht vor bei!
Get-Mailbox | Get-MailboxStatistics | Select-object DisplayName,ItemCount,StorageLimitStatus,@{Name='Size';Expression={$_.TotalItemSize.ToString().Split("(")[1].Split(" ")[0].Replace(",","")}} | Sort-Object Size -Descending
Mehrere Leute haben auch diese Problem.
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)- Als Antwort markiert Thomas_Fey Donnerstag, 14. November 2013 08:41
Alle Antworten
-
Ich habe 0 Ahnung von Exchange! Aber ich kann die Internet Suchmaschinen bedienen ;-)
So müsste es gehen wenn man aus dem TotalItemSize Objekt den Value heraus holt und ihn in MB umrechnen lässt :
Get-Mailbox | Get-MailboxStatistics | Select-object DisplayName,ItemCount,StorageLimitStatus,@{Name='Size';Expression={$_.TotalItemSize.Value.ToMB()}} | Sort-Object Size -Descending
Siehe:
Achtung: In dem oben genannten Thread wird das Cmdlet Format-List benutzt. Die Format-xxx Cmdlets sind zur Datenverarbeitung nicht geeignet, da Sie nur Format Informationen zur Darstellung am Bildschirm (oder zur Ausgabe in Textdateien) herstellen und keine Daten!
Man sollte die Format-xxx Cmdlets möglichst Nie benutzen! Select-Object ist da meistens die richtige Wahl!
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)- Bearbeitet Peter Kriegel Mittwoch, 13. November 2013 11:00
-
Ich habe 0 Ahnung von Exchange! Aber ich kann die Internet Suchmaschinen bedienen ;-)
Suchmaschine??? ;-)
So müsste es gehen wenn man aus dem TotalItemSize Objekt den Value heraus holt und ihn in MB umrechnen lässt :
Get-Mailbox | Get-MailboxStatistics | Select-object DisplayName,ItemCount,StorageLimitStatus,@{Name='Size';Expression={$_.TotalItemSize.Value.ToMB()}} | Sort-Object Size -Descending
-
Ok ! Stimmt ja!
Da habe ich gepennt! Sorry!
Kannst du ein Deserialisiertes Objekt (ohne Userdaten) mal hier Posten?
Vielleicht kann ich dann wieder mitreden ;-)
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)- Bearbeitet Peter Kriegel Mittwoch, 13. November 2013 11:10
-
Kannst du ein Deserialisiertes Objekt (ohne Userdaten) mal hier Posten?
Hier die Ausgabe von Get-Mailboxstatistics -id foo | Get-Member
TypeName: Deserialized.Microsoft.Exchange.Data.Mapi.MailboxStatistics Name MemberType Definition ---- ---------- ---------- ToString Method string ToString(), string ToString(string format, System.IFormatProvider formatProvider), string PSComputerName NoteProperty System.String PSComputerName=swk-exc02 PSShowComputerName NoteProperty System.Boolean PSShowComputerName=False RunspaceId NoteProperty System.Guid RunspaceId=67cc3f2b-554e-463e-9c0e-b604dadcc0c0 AssociatedItemCount Property System.UInt32 {get;set;} Database Property System.String {get;set;} DatabaseName Property System.String {get;set;} DeletedItemCount Property System.UInt32 {get;set;} DisconnectDate Property {get;set;} DisconnectReason Property {get;set;} DisplayName Property System.String {get;set;} Identity Property System.String {get;set;} IsArchiveMailbox Property System.Boolean {get;set;} IsQuarantined Property System.Boolean {get;set;} IsValid Property System.Boolean {get;set;} ItemCount Property System.UInt32 {get;set;} LastLoggedOnUserAccount Property System.String {get;set;} LastLogoffTime Property System.DateTime {get;set;} LastLogonTime Property System.DateTime {get;set;} LegacyDN Property System.String {get;set;} MailboxGuid Property System.Guid {get;set;} MailboxTableIdentifier Property System.String {get;set;} MapiIdentity Property System.String {get;set;} MoveHistory Property {get;set;} ObjectClass Property System.String {get;set;} OriginatingServer Property System.String {get;set;} ServerName Property System.String {get;set;} StorageLimitStatus Property System.String {get;set;} TotalDeletedItemSize Property System.String {get;set;} TotalItemSize Property System.String {get;set;}
-
Neeee !Nicht Get-member!
Ein Deserialisiertes Objekt wird durch XML beschrieben!
Ich brauche die XML (Text) Beschreibung des Objektes, da ich keinen Exchange Server habe, kann ich die Objekte nicht selbst herstellen.Mach mal folgendes:
Get-Mailbox | Get-MailboxStatistics | Select-Object -First 1 | Export-Clixml "$env:temp\test.xml" Write-host "Datei $env:temp\test.xml wurde erstellt. Ich öffne Sie" & Notepad "$env:temp\test.xml"
Poste den Inhalt von der erzeugten XML Datei (Notepad).
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)- Bearbeitet Peter Kriegel Mittwoch, 13. November 2013 12:47
-
Was die NSA nicht sehen soll, ist ge-X-t. ;-)
Die Einheiten von TotalItemSize variieren je nach Postfachgrösse von KB zu MB zu GB. Der Wert in Klammern ist immer in Bytes.
<Objs Version="1.1.0.1" xmlns= "http://schemas.microsoft.com/powershell/2004/04">
<Obj RefId="0">
<TN RefId="0">
<T>Selected.System.Management.Automation.PSCustomObject</T>
<T>Deserialized.Microsoft.Exchange.Data.Mapi.MailboxStatistics</T>
<T>Deserialized.Microsoft.Exchange.Data.Mapi.MailboxEntry</T>
<T>Deserialized.Microsoft.Exchange.Data.Mapi.MessageStore</T>
<T>Deserialized.Microsoft.Exchange.Data.Mapi.MapiObject</T>
<T>Deserialized.Microsoft.Exchange.Data.ConfigurableObject</T>
<T>Deserialized.System.Object</T>
</TN>
<ToString>Microsoft.Exchange.Data.Mapi.MailboxStatistics</ToString>
<Props>
<U32 N="AssociatedItemCount">95</U32>
<U32 N="DeletedItemCount">0</U32>
<Nil N="DisconnectDate" />
<Nil N="DisconnectReason" />
<S N="DisplayName">foo bar</S>
<U32 N="ItemCount">70</U32>
<Nil N="LastLoggedOnUserAccount" />
<Nil N="LastLogoffTime" />
<Nil N="LastLogonTime" />
<S N="LegacyDN">/O=XXX/OU=XXX/CN=RECIPIENTS/CN=FOOBAR</S>
<G N="MailboxGuid">XXX</G>
<S N="ObjectClass">Mailbox</S>
<S N="StorageLimitStatus">BelowLimit</S>
<S N="TotalDeletedItemSize">0 B (0 bytes)</S>
<S N="TotalItemSize">260 KB (266,202 bytes)</S>
<S N="MailboxTableIdentifier">XXX</S>
<S N="Database">DB01</S>
<S N="ServerName">XXX</S>
<S N="DatabaseName">DB01</S>
<Nil N="MoveHistory" />
<B N="IsQuarantined">false</B>
<B N="IsArchiveMailbox">false</B>
<S N="Identity">XXX</S>
<S N="MapiIdentity">XXX</S>
<S N="OriginatingServer">XXX.de</S>
<B N="IsValid">true</B>
</Props>
<MS>
<S N="PSComputerName">XXX</S>
<G N="RunspaceId">XXX</G>
<B N="PSShowComputerName">false</B>
</MS>
</Obj>
</Objs> -
Da kommst du an Textverarbeitung nicht vor bei!
Get-Mailbox | Get-MailboxStatistics | Select-object DisplayName,ItemCount,StorageLimitStatus,@{Name='Size';Expression={$_.TotalItemSize.ToString().Split("(")[1].Split(" ")[0].Replace(",","")}} | Sort-Object Size -Descending
Mehrere Leute haben auch diese Problem.
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)- Als Antwort markiert Thomas_Fey Donnerstag, 14. November 2013 08:41
-
Da kommst du an Textverarbeitung nicht vor bei
Na gut, das nehme ich dann. (seufz) ;-)
Ist halt etwas "unelegant".
Schön wäre eine Lösung gewesen, bei der die Ausführung und Sortierung auf dem Exchange laufen würde, und ich auf der Client Shell nur die Ergebnisse zurückbekomme.
Schade, dass das die PoSh nicht hergibt.
Aber Du hast mir auf jeden Fall weitergeholfen, Danke.Thomas
-
Da PowerShell so schön mit Objekten und echten Daten Arbeitet, versuche ich auch immer die Fehleranfällige Textverarbeitung zu vermeiden.
Manchmal muss man halt ... ;-)
Schön wenn es hilft.
Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
Mein deutscher PowerShell Blog
Mein 21 Teiliger PowerShell Video Grundlehrgang
Deutsche PowerShell Videos auf Youtube
Folge mir auf:
Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)