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

Printed on: May 5, 2024 at 01:05 o'clock

Member: Dani
Dani Sep 19, 2021 updated at 10:08:46 (UTC)
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
Member: colinardo
colinardo Sep 19, 2021 updated at 13:57:45 (UTC)
Goto Top
if ((Get-MailboxStatistics "user@domain.tld").TotalItemSize.Value.toBytes() -ge 50GB){  
    write-host "Mailbox >= 50 GB"  
    exit
}
Grüße Uwe
Member: PAddyB79
PAddyB79 Sep 21, 2021 at 08:45:26 (UTC)
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
Member: PAddyB79
PAddyB79 Sep 21, 2021 updated at 08:47:33 (UTC)
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
Member: colinardo
colinardo Sep 21, 2021 updated at 10:42:34 (UTC)
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.