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-ID: 608760

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

Ausgedruckt am: 26.11.2024 um 01:11 Uhr

NordicMike
NordicMike 30.09.2020 um 11:17:32 Uhr
Goto Top
$dataklein ist nicht definiert, also kann er diesen nicht mit foreach durchzählen.
RME1985
RME1985 30.09.2020 um 11:30:48 Uhr
Goto Top
was meinst du mit "definiert"? Dort sind doch die Datenbanken enthalten die kleiner als 26000 sind.
SlainteMhath
Lösung SlainteMhath 30.09.2020 um 12:01:42 Uhr
Goto Top
Moin,

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

lg,
Slainte
RME1985
RME1985 30.09.2020 um 12:41:30 Uhr
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
RME1985
RME1985 30.09.2020 um 12:45:05 Uhr
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
RME1985
RME1985 30.09.2020 um 12:46:37 Uhr
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