paddyb79
Goto Top

Pausieren von PowerShell bei gewisser Mailboxgrösse

Hallo Zusammen

ich suche ein PowerShell welches mir hilft in einem meiner Scripte die Grösse der Mailbox abzufragen und bei einer Grösse von 50GB eine Pause einzulegen... oder alternativ das Script zu beenden.

bin ein blutiger Anfänger und habe nun schon mehrer Stunden "verblasen" und es nicht geschafft... hat jemand von Euch was, was ich mir "leihen" kann? face-smile

wünsche allen ein super Weekend

Content-Key: 1279811173

Url: https://administrator.de/contentid/1279811173

Ausgedruckt am: 19.03.2024 um 14:03 Uhr

Mitglied: Dani
Dani 19.09.2021 aktualisiert um 12:08:46 Uhr
Goto Top
Moin,
die Größe eines Postfachs bekommst du über das cmdlet Get-MailboxStatistics abfragen. Eines der Werte ist auch die Postfachgröße. Diesen Wert in eine Variable schreiben. Anschließend über eine if-else Abfrage auswerten.


Gruß,
Dani
Mitglied: colinardo
colinardo 19.09.2021 aktualisiert um 15:57:45 Uhr
Goto Top
if ((Get-MailboxStatistics "user@domain.tld").TotalItemSize.Value.toBytes() -ge 50GB){  
    write-host "Mailbox >= 50 GB"  
    exit
}
Grüße Uwe
Mitglied: PAddyB79
PAddyB79 21.09.2021 um 10:45:26 Uhr
Goto Top
Zitat von @Dani:

Moin,
die Größe eines Postfachs bekommst du über das cmdlet Get-MailboxStatistics abfragen. Eines der Werte ist auch die Postfachgröße. Diesen Wert in eine Variable schreiben. Anschließend über eine if-else Abfrage auswerten.


Gruß,
Dani

Hi DAni

ja dies habe ich auch probiert... aber eben erfolglos
Mitglied: PAddyB79
PAddyB79 21.09.2021 aktualisiert um 10:47:33 Uhr
Goto Top
Zitat von @colinardo:

> if ((Get-MailboxStatistics "user@domain.tld").TotalItemSize.Value.toBytes() -ge 50GB){  
>     write-host "Mailbox >= 50 GB"  
>     exit
> }
> 
Grüße Uwe

Hi Uwe

Deine Loesung sieht er von mir sehr aehndlich, bekomme bei Dir wendigstens einen "Sinnvollen" Fehler

Method invocation failed because [Deserialized.Microsoft.Exchange.Data.ByteQuantifiedSize] does not contain a method named 'ToBytes'.  
At line:1 char:5
+ if ((Get-MailboxStatistics "xxx.xx.xx").TotalItemSize ...  
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (ToKB:String) , RuntimeException
    + FullyQualifiedErrorId : MethodNotFound
Mitglied: colinardo
colinardo 21.09.2021 aktualisiert um 12:42:34 Uhr
Goto Top
Zitat von @PAddyB79:

Zitat von @colinardo:
Hi Uwe

Deine Loesung sieht er von mir sehr aehndlich, bekomme bei Dir wendigstens einen "Sinnvollen" Fehler

Method invocation failed because [Deserialized.Microsoft.Exchange.Data.ByteQuantifiedSize] does not contain a method named 'ToBytes'.  
> At line:1 char:5
> + if ((Get-MailboxStatistics "xxx.xx.xx").TotalItemSize ...  
> +     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>     + CategoryInfo          : InvalidOperation: (ToKB:String) , RuntimeException
>     + FullyQualifiedErrorId : MethodNotFound

Wenn die Meldung kommt hast du die Exchange CMDLets nicht vollständig korrekt eingebunden, bzw. ohne SerializationLevel=Full oder dein Account hat nicht genügend Rechte für den Zugriff.
Denn wenn die Objekte nicht komplett deserialisiert werden gibt es die Methode toBytes() nicht. Sind sie dagegen richtig eingebunden hast du auch noch mehr Funktionen zur Umwandlung der Größe in Dezimalwerte.
Guckst du hier:

screenshot

Deswegen solltest du beim Einbinden darauf achten das komplett deserialisiert wird, also entweder mit Laden des Snapins
#EX 2013-2019
Add-PSSnapin Microsoft.Exchange.Management.PowerShell.SnapIn
Oder über den Import einer PSSession
$session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri "https://server.domain.tld/powershell/?SerializationLevel=Full" -Authentication Kerberos  
Import-PSSession $session -DisableNameChecking -AllowClobber
Wichtig ist das SerializationLevel=Full am Ende der URL.

Ansonsten müsstest du mal deine verwendete Exchange Version mitteilen.