none
Bestimmte Teile einer Ausgabe löschen

    Frage

  • Hallo Zusammen,

    das hier ist der erste Eintrag von mir im Forum, daher nicht übel nehmen, wenn ich etwas vergesse / falsch mache :)

    Mein Problem ist folgendes:

    Es ist mein erstes Mal mit der PS, ich soll ein Skript entwickeln, das die kleinste Exchange-DB zurückgibt, mit Namen und Größe.

    Ich habe es soweit hinbekommen, dass die Shell mir die alle Datenbanken zurückgibt, die an einem bestimmten Standort sind, sortiert nach der Größe aufsteigend:

    get-MailboxDatabase -Status | select ServerName,Name,DatabaseSize | Where-Object {$_.name -like "*STANDORTNAME"} | Sort-Object DatabaseSize

    So gibt er mir aber ALLE Datenbanken aus, ich möchte quasi NUR die kleinste ausgegeben bekommen, finde aber dazu nichts.. gibt es eine Möglichkeit, alle anderen bis auf die erste auszublenden o.Ä.?

    Für Hilfe bin ich sehr dankbar

    LG


    • Bearbeitet JBI95 Dienstag, 6. März 2018 16:10
    Dienstag, 6. März 2018 14:32

Antworten

  • Hi,

    würde jetzt ohne es getestet zu haben einfach sagen: ...| select ServerName,Name,DatabaseSize -First 1 |...

    Grüße

    • Als Antwort markiert JBI95 Dienstag, 6. März 2018 16:01
    Dienstag, 6. März 2018 14:36
  • Fast. ;-)
    Get-MailboxDatabase -Status | 
        Sort-Object -Property DatabaseSize |
            Select-Object -Property ServerName,Name,DatabaseSize -First 1
    Damit solltest Du die kleinste Datenbank geliefert. Wenn Du stattdessen die größte willst - da widersprichst Du Dich in Deiner Frage oben - nimmst Du statt -First 1 eben einfach -Last 1.

    Best regards,

    (79,108,97,102|%{[char]$_})-join''


    • Bearbeitet BOfH_666 Dienstag, 6. März 2018 15:27
    • Als Antwort markiert JBI95 Dienstag, 6. März 2018 16:01
    Dienstag, 6. März 2018 15:26

Alle Antworten

  • Hi,

    würde jetzt ohne es getestet zu haben einfach sagen: ...| select ServerName,Name,DatabaseSize -First 1 |...

    Grüße

    • Als Antwort markiert JBI95 Dienstag, 6. März 2018 16:01
    Dienstag, 6. März 2018 14:36
  • Fast. ;-)
    Get-MailboxDatabase -Status | 
        Sort-Object -Property DatabaseSize |
            Select-Object -Property ServerName,Name,DatabaseSize -First 1
    Damit solltest Du die kleinste Datenbank geliefert. Wenn Du stattdessen die größte willst - da widersprichst Du Dich in Deiner Frage oben - nimmst Du statt -First 1 eben einfach -Last 1.

    Best regards,

    (79,108,97,102|%{[char]$_})-join''


    • Bearbeitet BOfH_666 Dienstag, 6. März 2018 15:27
    • Als Antwort markiert JBI95 Dienstag, 6. März 2018 16:01
    Dienstag, 6. März 2018 15:26
  • Fast. ;-)
    Get-MailboxDatabase -Status | 
        Sort-Object -Property DatabaseSize |
            Select-Object -Property ServerName,Name,DatabaseSize -First 1
    Damit solltest Du die kleinste Datenbank geliefert. Wenn Du stattdessen die größte willst - da widersprichst Du Dich in Deiner Frage oben - nimmst Du statt -First 1 eben einfach -Last 1.

    Best regards,

    (79,108,97,102|%{[char]$_})-join''



    habe das beides gerade mal probiert... wollte die Kleinste haben, hab mich vertippt, so kriege ich ja die Größte... aber wenn ich es mit -Last 1 mache, gibt die Shell einfach NIX aus... :-/

    • Bearbeitet JBI95 Dienstag, 6. März 2018 16:10
    Dienstag, 6. März 2018 16:09
  • .. aber wenn ich es mit -Last 1 mache, gibt die Shell einfach NIX aus... :-/
    Hmmm ... theoretisch eigentlich unmöglich. Wenn Du Dir die Liste mal komplett ausgeben lässt - also ohne -First oder -Last - sollte das letzte Element Deiner Liste die kleinste DB sein. Das solltest Du auf der Konsole ja bestimmt verifizieren können, oder? Oder Hast Du DBs, die keine Größen-Informationen liefern?

    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 6. März 2018 16:35
  • Leider doch... mit First kriege ich die Größte DB raus, mit Last einfach gar nichts... merkwürdig...
    Wenn ich es ohne First/Last mache kriege ich auch alle DBs ausgegeben...

    Mittwoch, 7. März 2018 09:02
  • OK, probier doch mal bitte mit dem Parameter -Descending die Sortierreihenfolge umzukehren und nimm dann mit -First 1 wieder den ersten zurückgelieferten Eintrag.

    Oder bekommst Du in der kompletten Liste als letzten einen "leeren" Eintrag ausgegeben?


    Best regards,

    (79,108,97,102|%{[char]$_})-join''


    • Bearbeitet BOfH_666 Mittwoch, 7. März 2018 10:52
    Mittwoch, 7. März 2018 10:51
  • OK, probier doch mal bitte mit dem Parameter -Descending die Sortierreihenfolge umzukehren und nimm dann mit -First 1 wieder den ersten zurückgelieferten Eintrag.

    Oder bekommst Du in der kompletten Liste als letzten einen "leeren" Eintrag ausgegeben?


    Best regards,

    (79,108,97,102|%{[char]$_})-join''


    Danke für deinen Tipp, hat aber leider auch nichts gebracht... er gibt mir so wieder die größte DB aus...

    Ich glaube, er gibt mir mit Last -1 einfach einen leeren Eintrag aus. Habe es mit -Descending in Kombination mit First -1 und Last -1 probiert.. First wirft wie gesagt die größte DB raus, last wieder gar nichts :/
    • Bearbeitet JBI95 Donnerstag, 8. März 2018 11:57
    Donnerstag, 8. März 2018 11:56
  • Hmmm ... dann funktioniert Dein Server und Deine Powershell wohl mit einer andere Physik. ;-)  Etwas Anderes fällt mir jetzt (quasi in Ferndiagnose) auch nicht mehr ein, sorry.

    Best regards,

    (79,108,97,102|%{[char]$_})-join''


    • Bearbeitet BOfH_666 Donnerstag, 8. März 2018 12:19
    Donnerstag, 8. März 2018 12:19
  • [Nur so als Anregung]

    Versuch mal die Anzahl an Ausgaben mit -First immer um eins zu erhöhen, also -first 1, -first2, ...

    Irgendwann solltest du nicht nur leere Einträge mehr bekommen sondern (neben den leeren Einträgen) eine Ausgabe die du "sehen" kannst, ist dann deine gesuchte DB.

    Dann müsstest du noch klären was die "leeren" Ausgaben sind, bzw. wenn es immer die selbe Anzahl an leeren Ausgaben ist, musst du dein Script entsprechend anpassen. 

    Wenn wir annehmen die ersten 9 Einträge sind leer und der 10 Eintrag ist deine gesuchte DB, schreibst du alles in ein Array und lässt dir nur den 10 Eintrag ausgeben.

    Grüße

    Donnerstag, 8. März 2018 13:38
  • Moin, ihr 2.

    Problem ist gelöst. Es lag daran, dass die Größe ein Textfeld war und der deshalb nicht richtig sortiert hat.

    Habe das jetzt mit Hilfe folgendermaßen gelöst:

    get-MailboxDatabase -Status | ? {$_.name -like "*Standortname"}| sort {$_.DatabaseSize.ToMB()} | select ServerName,Name,DatabaseSize -First 1

    so klappt es!

    Danke für eure Hilfe, thema kann geschlossen werden! :) :)

    Donnerstag, 8. März 2018 14:39
  • Oder Du nimmst in dem Fall dann

    | Select-Object -First 10 | Select-Object -Last 1

    ;-)


    Best regards,

    (79,108,97,102|%{[char]$_})-join''

    Donnerstag, 8. März 2018 15:11
  • Habe das jetzt mit Hilfe folgendermaßen gelöst:

    get-MailboxDatabase -Status | ? {$_.name -like "*Standortname"}| sort {$_.DatabaseSize.ToMB()} | select ServerName,Name,DatabaseSize -First 1

    so klappt es!

    Wichtig in diesem Zusammenhang ist sich bewusst zu sein, dass diese Vorgehensweise nicht funktionieren wird, wenn man nicht die Exchange Management Shell benutzt, sondern von einer "neutralen" Shell eine PS Remoting-Verbindung zu Exchange herstellt.

    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> https://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com


    In theory, there is no difference between theory and practice. In practice, there is.

    Donnerstag, 8. März 2018 15:27