Benutzer mit den meisten Antworten
Powershell Exchange 2010 und Exchange 2013 unterschiedlich ?

Frage
-
Hallo zusammen,
ich habe ein interessantes Phänomen. Ich setze per PowerShell die Archivgröße der Benutzerpostfächer. Unter der Exchange 2010 Powershell funktioniert diese super.
Es werden mir nur die Postfächer zurückgegeben die keine Archivgröße von 2GB haben.
Get-Mailbox -resultsize 5000 | where-object { $_.ArchiveDatabase -eq "DB" -and $_.ArchiveQuota -ne 2GB }| Set-Mailbox -ArchiveQuota 2GB -ArchiveWarningQuota 1950MB
Unter der Exchange 2013 Powershell werden mir immer alle Postfächer ausgegeben, obwohl schon alle ein Quota von 2GB haben.
Get-Mailbox -resultsize 5000 | where-object { $_.ArchiveDatabase -eq "DB" -and $_.ArchiveQuota -ne 2GB }
Hat jemand eine Idee warum es da einen Unterschied gibt ?
Vielen Dank für alle Antworten.
MfG Hei_G
- Bearbeitet Hei_G Dienstag, 15. März 2016 09:59
Antworten
-
Folgende Befehle
Get-Mailbox -resultsize 5000 | where-object { $_.ArchiveDatabase -eq "Archiv1 EX13" -and ($_.ArchiveQuota.IsUnlimited -or $_.ArchiveQuota.Value.ToBytes() -ne 2GB)
Get-Mailbox -resultsize 5000 | where-object { $_.ArchiveDatabase -eq "Archiv1 EX13" -and $_.ArchiveQuota.Value.ToBytes() -ne 2147483648 }
MfG Hei_G
-
Ich habe den unteren Befehl rauskopiert (der obere kann nicht fehlerfrei funktionieren) und sowohl auf 2010 als auch auf 2013 ausprobiert. Bei mir sind das über 2000 Postfächer.
Bei einer Standard-Installation mit Standard-Postfächern gibt es keine Fehlermeldungen.
Also muss bei einem User bei Dir irgendwas unerwartetes (falsches?) drin stehen. Den müsstest Du zuerst finden, damit wir sehen, was da drin steht.
Wenn Du den zweiten Befehl startest, müsstest Du eine Liste bekommen und der Fehler tritt dann am nächsten User auf, den die Liste nicht mehr zeigt.
Aber wir können auch mal was ganz anderes probieren:
$wert = [Microsoft.Exchange.Data.ByteQuantifiedSize](2gb)
Get-Mailbox -resultsize 5000 | where-object { $_.ArchiveDatabase -eq "Archiv1 EX13" -and -not $_.ArchiveQuota.equals($wert) }
Gruesse aus Berlin schickt Robert - MVP Office Servers and Services (Exchange Server)
- Bearbeitet Robert Wille Dienstag, 15. März 2016 14:39
- Als Antwort markiert Hei_G Dienstag, 15. März 2016 15:03
Alle Antworten
-
Moin,
100% werden Dir das nur die Entwickler sagen können, aber ich spekuliere mal:
Da es sich beim Objekt-Type für "ArchiveQuota" nicht um eine reine Zahl handelt, muss jede Zahl also in den entsprechenden Objekttyp konvertiert werden. Und hier könnte es zwischen den Versionen eine Änderung gegeben haben, wie Zahlen konvertiert werden. Eventuell auch einen Bug.
Probier doch mal, anstelle von 2GB mit der echten Zahl zu arbeiten: 2147483648.
Gruesse aus Berlin schickt Robert - MVP Office Servers and Services (Exchange Server)
-
OK, dann tricksen wir ein wenig.
Der folgende Befehl sollte in 2010 und 2013 identische Ergebnisse bringen:
Get-Mailbox -resultsize 5000 | where-object { $_.ArchiveDatabase -eq "DB" -and ($_.ArchiveQuota.IsUnlimited -or $_.ArchiveQuota.Value.ToBytes() -ne 2GB ) }
Den Teil mit ".IsUnlimited" kannst Du weglassen, wenn sichergestellt ist, dass wirklich alle Mailboxen immer einen Wert in ArchiveQuota haben. Sollte es nicht so sein und es Mailboxen mit ArchiveQuota = unlimited geben (was der Standard-Wert ist!), dann würde der Teil .Value.ToBytes() eine Fehlermeldung bringen, da "unlimited" keine Zahl ist.
Gruesse aus Berlin schickt Robert - MVP Office Servers and Services (Exchange Server)
- Bearbeitet Robert Wille Dienstag, 15. März 2016 14:05
-
Da erhalte ich folgenden Fehler ...
where-object : Es ist nicht möglich, eine Methode für einen Ausdruck aufzurufen, der den NULL hat.
In Zeile:1 Zeichen:32
+ Get-Mailbox -resultsize 5000 | where-object { $_.ArchiveDatabase -eq "Archiv1 EX ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [Where-Object], RuntimeException
+ FullyQualifiedErrorId : InvokeMethodOnNull,Microsoft.PowerShell.Commands.WhereObjectCommandauch bei Änderung in 2147483648 oder wenn ich "unlimited" weglasse ....
MfG Hei_G
-
Folgende Befehle
Get-Mailbox -resultsize 5000 | where-object { $_.ArchiveDatabase -eq "Archiv1 EX13" -and ($_.ArchiveQuota.IsUnlimited -or $_.ArchiveQuota.Value.ToBytes() -ne 2GB)
Get-Mailbox -resultsize 5000 | where-object { $_.ArchiveDatabase -eq "Archiv1 EX13" -and $_.ArchiveQuota.Value.ToBytes() -ne 2147483648 }
MfG Hei_G
-
Ich habe den unteren Befehl rauskopiert (der obere kann nicht fehlerfrei funktionieren) und sowohl auf 2010 als auch auf 2013 ausprobiert. Bei mir sind das über 2000 Postfächer.
Bei einer Standard-Installation mit Standard-Postfächern gibt es keine Fehlermeldungen.
Also muss bei einem User bei Dir irgendwas unerwartetes (falsches?) drin stehen. Den müsstest Du zuerst finden, damit wir sehen, was da drin steht.
Wenn Du den zweiten Befehl startest, müsstest Du eine Liste bekommen und der Fehler tritt dann am nächsten User auf, den die Liste nicht mehr zeigt.
Aber wir können auch mal was ganz anderes probieren:
$wert = [Microsoft.Exchange.Data.ByteQuantifiedSize](2gb)
Get-Mailbox -resultsize 5000 | where-object { $_.ArchiveDatabase -eq "Archiv1 EX13" -and -not $_.ArchiveQuota.equals($wert) }
Gruesse aus Berlin schickt Robert - MVP Office Servers and Services (Exchange Server)
- Bearbeitet Robert Wille Dienstag, 15. März 2016 14:39
- Als Antwort markiert Hei_G Dienstag, 15. März 2016 15:03
-
Der erste war ja dein Vorschlag (-:
mhm also jetzt funktioniert der zweite auch, nachdem ich die Shell mal geschlossen habe. Folgendes funktioniert:
Get-Mailbox -resultsize 5000 | where-object { $_.ArchiveDatabase -eq "Archiv1 EX13" -and $_.ArchiveQuota.Value.ToBytes() -ne 2147483648 }
oder
$wert = [Microsoft.Exchange.Data.ByteQuantifiedSize](2gb) Get-Mailbox -resultsize 5000 | where-object { $_.ArchiveDatabase -eq "Archiv1 EX13" -and -not $_.ArchiveQuota.equals($wert) }
Danke Robert !!!
MfG Hei_G
- Bearbeitet Hei_G Dienstag, 15. März 2016 15:03
-
Der erste war keine Vorschlag, nur eine Versuch, ob es eventuell an der Umrechnung 2GB liegen kann. Wobei ich gerade sehe, dass Du Deinen Beitrag editiert hast. Als ich meine Antwort schrieb, stand da noch was anderes - und das konnte nicht funktioniert. ;)
Danke für die Info, dass es nun doch klappt.
Die erste Lösung funktioniert, solange die PowerShell-Entwickler nichts an der Logik änder.
Die zweite Lösung funktioniert, solange die Exchange-Entickler nichts ändern.
Gruesse aus Berlin schickt Robert - MVP Office Servers and Services (Exchange Server)
- Bearbeitet Robert Wille Dienstag, 15. März 2016 15:07