Benutzer mit den meisten Antworten
Powershell 3.0, -eq -like

Frage
-
moin,
ist das ein BUG? Der Befehl ist aus der TechNet HIlfe
https://technet.microsoft.com/en-us/library/jj863439(v=exchg.150).aspx
Get-MailboxStatistics -database huser | Where {$_.DisconnectReason -eq "Disabled"} | ft DisplayName,Database,DisconnectDate,disconnectreason
kein Ergebniss
Get-MailboxStatistics -database huser | Where {$_.DisconnectReason -like "Disabled*"} | ft DisplayName,Database,DisconnectDate,disconnectreason
liefert korrekt ein Ergebnis
noch ein kurze Frage: seit Powershell 3.0 sollte ja $DisconnectReason als Schreibweise möglich sein?
Chris
Antworten
-
OK, hier die Auflösung.
Der im OP zitierte Artikel bezog sich auf Exchange 2013, und da, siehe meinen Post mit Screenshots, funktionierte der Befehl auch so.
Bei Exchange 2016 hat sich das Objekt-Modell offenbar etwas verändert.
Gleich vorab: Was dennoch funktioniert, ist das Ersetzen von -eq durch -like ohne Stern.
Hier noch einmal bildlich:
Exchange 2013:
Somit ist der eigentliche Wert auch hier Integer, und der Lietralwert wird aus einer Enumeration bezogen.
Exchange 2016:
Hier wird die Konvertierung also durch die Ansprache von "Value" ausgelöst. Versteckte Sonderzeichen gibt es nicht:
Wenn man also den obigen Befehl an Exchange 2016 anpassen möchte, verwendet man entweder -like statt -eq (würde ich bei Strings vermutlich eh machen, aber das ist meine persönliche, von SQL versaute Marotte), oder man schreibt:
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
my personal blog (mostly German) -> http://it-pro-berlin.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.comIn theory, there is no difference between theory and practice. In practice, there is.
- Als Antwort markiert -- Chris -- Mittwoch, 27. Juli 2016 13:26
Alle Antworten
-
> Get-MailboxStatistics -database huser | Where {$_.DisconnectReason*-eq> "Disabled"} *| ft DisplayName,Database,DisconnectDate,disconnectreasonSteht in DisconnectReason literal "Disabled" drin?> noch ein kurze Frage: seit Powershell 3.0 sollte ja $DisconnectReason> als Schreibweise möglich sein?Meinst Du ( Get-MailboxStatistics ).DisconnectReason? Also der direkteZugriff auf eine einzelne Eigenschaft einer Objektcollection?
-
ja, aber ich erkenne nicht ob eventl. Leerzeichen am Ende stehen. -eq bringt keine Ergebnis?
Kannst ja [int[]][char[]]($_.DisconnectReason) ausgeben lassen, dann siehst Du's ;-)
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
my personal blog (mostly German) -> http://it-pro-berlin.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.comIn theory, there is no difference between theory and practice. In practice, there is.
-
Moin,
ich habe gerade keine im Status "Disabled", aber mit "SoftDeleted" funktioniert auch -eq .
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
my personal blog (mostly German) -> http://it-pro-berlin.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.comIn theory, there is no difference between theory and practice. In practice, there is.
-
keine Leerzeichen. Am Screenshot erkennt man gut das mit -eq kein Ergebnis geliefert wird.
$users = Get-MailboxStatistics -database user | Where {$_.DisconnectReason -like "Disabled*"}
foreach ($user in $users) { write-host ("[{0}]" -f $user.disconnectreason) }
[Disabled]
[Disabled]
[Disabled]
[Disabled]
Chris
-
Hallo,
dann solltest du dir einmal eine dieser Eigenschaften genauer ansehen, indem du sie mit
$a = (Get-MailboxStatistics -database user | Where {$_.DisconnectReason -like "Disabled*"} | select -first 1).DisconnectReason
in eine Variable speicherst. Ist das wirklich ein String? Also $a.Gettype(). Schau mal, ob $a.Length genau der Anzahl an Buchstaben entspricht. Vielleicht ist dort noch irgendwas unsichtbares am Ende, irgendein Steuerzeichen.
Viele Grüße
Christoph
-
[PS] C:\WINDOWS\system32>$a = (Get-MailboxStatistics -database user | Where {$_.DisconnectReason -like "Disabled*"} | select -first 1).DisconnectReason
[PS] C:\WINDOWS\system32>$a.Gettype()IsPublic IsSerial Name BaseType
-------- -------- ---- --------
True True Int32 System.ValueType
[PS] C:\WINDOWS\system32>$a.Length
1
[PS] C:\WINDOWS\system32>Chris
-
Moin,
also zumindest bei Exchange 2013 funktioniert es:
Der Typ ist allerdings wirklich nicht String, sondern MailboxState:
Ich schau mal auf Exchange 2016.
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
my personal blog (mostly German) -> http://it-pro-berlin.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.comIn theory, there is no difference between theory and practice. In practice, there is.
-
Evgenij,
eine Frage zum Delete. Wenn man ein Postfach in der GUI mit dem Papierkorb löscht wird ja auch der User im AD gelöscht. Eigentlich ein viel gefährlicher Vorgang als "... disable" der aber über die GUI leichter erreichbar ist. Ausserdem erscheint kein Wert unter DisconnectReason. Müsste da nicht ebenfalls etwas stehen?
zb. Harddelete oder Softdelete- weil ja der User auch gelöscht wird?
Chris
- Bearbeitet -- Chris -- Mittwoch, 27. Juli 2016 12:43
-
OK, hier die Auflösung.
Der im OP zitierte Artikel bezog sich auf Exchange 2013, und da, siehe meinen Post mit Screenshots, funktionierte der Befehl auch so.
Bei Exchange 2016 hat sich das Objekt-Modell offenbar etwas verändert.
Gleich vorab: Was dennoch funktioniert, ist das Ersetzen von -eq durch -like ohne Stern.
Hier noch einmal bildlich:
Exchange 2013:
Somit ist der eigentliche Wert auch hier Integer, und der Lietralwert wird aus einer Enumeration bezogen.
Exchange 2016:
Hier wird die Konvertierung also durch die Ansprache von "Value" ausgelöst. Versteckte Sonderzeichen gibt es nicht:
Wenn man also den obigen Befehl an Exchange 2016 anpassen möchte, verwendet man entweder -like statt -eq (würde ich bei Strings vermutlich eh machen, aber das ist meine persönliche, von SQL versaute Marotte), oder man schreibt:
Evgenij Smirnov
msg services ag, Berlin -> http://www.msg-services.de
my personal blog (mostly German) -> http://it-pro-berlin.de
Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.comIn theory, there is no difference between theory and practice. In practice, there is.
- Als Antwort markiert -- Chris -- Mittwoch, 27. Juli 2016 13:26