rme1985
Goto Top

Powershell größe von Usern und Datenbanken abgleichen

Guten Morgen,

ich möchte gerne auf meinem Exchange die Größe der Datenbanken und die Größe der User abgleichen.

Dazu verwende ich folgendes Script

$user = Get-Mailbox -ResultSize Unlimited | Select-Object alias | foreach-object {Get-MailboxStatistics -Identity $_.alias | select-object DisplayName,Database, @{Name="Mailboxsize";expression={$_.TotalItemSize.Value.ToMB()}}}  

$Database1 = Get-MailboxDatabase -Status | where-object {$_.Name -like "DATA*"} | select name,@{Name='DBSize';Expression={$_.DatabaseSize.ToMb()}},@{Name='Available New Mbx Space Mb)';Expression={$_.AvailableNewMailboxSpace.ToMb()}}  

Das passt soweit auch.

Nun wollte ich einige User gerne in neue Datenbanken verschieben, diese Datenbanken sollen aber eine gewisse größe nicht überschreiten.

Das wollte ich wie folgt machen

$dataklein = $database1 | where {$_.DBSize -lt 26000}

Soweit auch kein Problem.

Jetzt wollte ich habe die User abgleichen deren Postfächer dann die Gesamtgröße der Datenbanken nicht sprengen sollen.

Das habe ich wie folgt probiert:

foreach($u in $user){
if(($u.Mailboxsize -le 2000) -and ($u.Mailboxsize -gt 1)){

$data3 = foreach($dataklein01 in $dataklein)
{$u.mailboxsize + 100 -lt $dataklein01.dbsize}  }}


Hier fängt das Problem nun an. In die Variable $data3 wollte ich mir gerne die Datenbanken ausgeben lassen, welche für den User infrage kommen würden.

Das klappt aber leider nicht. Ich bekomme hier nur True und False zurück.

Hat jemand von Euch eine Idee wie ich das Problem lösen könnte?

Vielen Dank

Content-Key: 608760

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

Printed on: April 26, 2024 at 17:04 o'clock

Member: NordicMike
NordicMike Sep 30, 2020 at 09:17:32 (UTC)
Goto Top
$dataklein ist nicht definiert, also kann er diesen nicht mit foreach durchzählen.
Member: RME1985
RME1985 Sep 30, 2020 at 09:30:48 (UTC)
Goto Top
was meinst du mit "definiert"? Dort sind doch die Datenbanken enthalten die kleiner als 26000 sind.
Member: SlainteMhath
Solution SlainteMhath Sep 30, 2020 at 10:01:42 (UTC)
Goto Top
Moin,

was du machen willst, sieht in etwa so aus:
$date3 = $dataklein | where $_.dbsize -gt ($u.maioboxsize+100)

lg,
Slainte
Member: RME1985
RME1985 Sep 30, 2020 at 10:41:30 (UTC)
Goto Top
schaut cool aus aber geht irgendwie nicht...

Where-Object : Das Argument für den Parameter "Property" kann nicht überprüft werden. Das Argument ist NULL oder leer. Geben Sie ein Argument an, das nicht NULL oder
leer ist, und führen Sie den Befehl erneut aus.


$dataklein ist gefüllt:


PS C:\Users\administrator> $dataklein

Name DBSize Available New Mbx Space Mb)
------ ---------------------------
DATA01 2560 321
DATA03 1024 165


$_.dbsize aber dann nicht face-sad
Member: RME1985
RME1985 Sep 30, 2020 at 10:45:05 (UTC)
Goto Top
das hier würde gehen

$date3 = $dataklein | where {$_.dbsize -gt ($u.mailboxsize + 100)}

was kommt aber nur eine DB zurück, es sind aber 2 die darauf passen würden.

DATA01 2560 321
DATA03 1024 165
Member: RME1985
RME1985 Sep 30, 2020 at 10:46:37 (UTC)
Goto Top
sorry wir haben -gt drin, dass heißt dass DATA03 rausfällt.

Sorry die Lösung war richtig es fehlte nur die Klammer und ein kleiner Schreibfehler sonst ist alles super face-smile