none
Powershell remote, unterschiedliche Ausgabe? RRS feed

  • Frage

  • moin,

    wenn ich in der EMS

    Get-Mailbox -resultsize unlimited | select -expand EmailAddresses

    ausführe erhalte ich korrekte die gesamten Objekte

    AddressString      : C=US;A= ;P=firma;O=Zentrale;S=sysadm;
    ProxyAddressString : X400:C=US;A= ;P=firma;O=Zentrale;S=sysadm;
    Prefix             : X400
    IsPrimaryAddress   : True
    PrefixString       : X400

    SmtpAddress        : sysadm@firma.xy
    AddressString      : sysadm@firme.de
    ProxyAddressString : smtp:sysadm@firma.eu
    Prefix             : SMTP
    IsPrimaryAddress   : False
    PrefixString       : smtp

    wenn ich den gleichen Befehl auf einem JOB Server ausführe erhalte ich .

    $SessionORFe = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://firma/PowerShell/ -Authentication Kerberos Import-PSSession $SessionORFe -AllowClobber -DisableNameChecking

    Get-Mailbox -resultsize unlimited | select -expand EmailAddresses

    X400:C=US;A= ;P=firma;O=Zentrale;S=sysadm;
    smtp:sysadm@firma.eu
    smtp:sysadm@firma.gv.at
    MRS:sysadm@Zentrale.firmaS
    SMTP:sysadm@firma.de


    Chris

    Donnerstag, 6. Juli 2017 05:41

Antworten

  • Ja, das ist die Typenserialisierung in Aktion. Und die Frage ist...?

    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> http://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    • Als Antwort markiert -- Chris -- Donnerstag, 6. Juli 2017 06:23
    Donnerstag, 6. Juli 2017 06:08
  • Typenserialisierung kenn ich leider nicht.

    Man muss den Begriff nicht kennen, aber mit ein wenig Nachdenken wäre klar, was da passiert.

    Auf einem Exchange-Server sind zusammen mit den Befehlen auch bestimmte bestimmte Typen (auch Klassen genannt) installiert, für Get-Mailbox ist das dieser hier KLICK.

    Ein "Get-Mailbox | Get-Member" zeigt Dir das auch in der EMS an.

    Wenn Du nun Remote-Shell-Befehle ausführst, sind diese Typen logischerweise nicht auf dem Remote Server installiert (bzw. die die PS davon aus, dass sie es nicht sind).

    Daher werden die Exchange-Typen in einen "allgemeinen" Typen umgewandelt -> Typserialisierung.

    Der Befehl oben ("Get-Mailbox | Get-Member") liefert Dir daher auch Remote einen anderen Typen als lokal.

    Mit Get-Member solltest Du Dich dringend beschäftigen. Der gehört zu den drei wichtigsten Befehlen der PowerShell, denn alles in der PowerShell ist ein Objekt - und mit findest du heraus, welches Objekt das ist (na ja, meistens zumindest, manchmal kommt im Sinne des Admins auch ein eigentlich falscher Type raus).


    Gruesse aus Berlin schickt Robert - MVP Office Servers and Services (Exchange Server)

    • Als Antwort markiert -- Chris -- Donnerstag, 6. Juli 2017 09:03
    Donnerstag, 6. Juli 2017 08:59

Alle Antworten

  • Ja, das ist die Typenserialisierung in Aktion. Und die Frage ist...?

    Evgenij Smirnov

    I work @ msg services ag, Berlin -> http://www.msg-services.de
    I blog (in German) @ http://it-pro-berlin.de
    my stuff in PSGallery --> https://www.powershellgallery.com/profiles/it-pro-berlin.de/
    Exchange User Group, Berlin -> http://exusg.de
    Windows Server User Group, Berlin -> http://www.winsvr-berlin.de
    Mark Minasi Technical Forum, reloaded -> http://newforum.minasi.com

    • Als Antwort markiert -- Chris -- Donnerstag, 6. Juli 2017 06:23
    Donnerstag, 6. Juli 2017 06:08
  • Hallo Evgenij,

    mit

    Get-Mailbox-resultsizeunlimited|select-expandEmailAddresses|%{$_.SmtpAddress}

    erhalte ich in der EMS Daten, Remote nicht.Typenserialisierung kenn ich leider nicht.

    ich kann mir also so behelfen.

    Get-Mailbox-resultsizeunlimited|select-expandEmailAddresses

    wie kann ich nur auf smtp: einschränken? (Also keine X400 und kein MRS Adressen?)

    Get-Mailbox-resultsizeunlimited|select-expandEmailAddresses|whereprefix-like"*smtp*"

    funktioniert leider nicht


    Chris


    • Bearbeitet -- Chris -- Donnerstag, 6. Juli 2017 06:22
    Donnerstag, 6. Juli 2017 06:16
  • habe es gefunden:

    Get-Mailbox -resultsize unlimited | select -expand EmailAddresses | where {$_ -like "smtp:*"}


    Chris

    Donnerstag, 6. Juli 2017 06:23
  • Typenserialisierung kenn ich leider nicht.

    Man muss den Begriff nicht kennen, aber mit ein wenig Nachdenken wäre klar, was da passiert.

    Auf einem Exchange-Server sind zusammen mit den Befehlen auch bestimmte bestimmte Typen (auch Klassen genannt) installiert, für Get-Mailbox ist das dieser hier KLICK.

    Ein "Get-Mailbox | Get-Member" zeigt Dir das auch in der EMS an.

    Wenn Du nun Remote-Shell-Befehle ausführst, sind diese Typen logischerweise nicht auf dem Remote Server installiert (bzw. die die PS davon aus, dass sie es nicht sind).

    Daher werden die Exchange-Typen in einen "allgemeinen" Typen umgewandelt -> Typserialisierung.

    Der Befehl oben ("Get-Mailbox | Get-Member") liefert Dir daher auch Remote einen anderen Typen als lokal.

    Mit Get-Member solltest Du Dich dringend beschäftigen. Der gehört zu den drei wichtigsten Befehlen der PowerShell, denn alles in der PowerShell ist ein Objekt - und mit findest du heraus, welches Objekt das ist (na ja, meistens zumindest, manchmal kommt im Sinne des Admins auch ein eigentlich falscher Type raus).


    Gruesse aus Berlin schickt Robert - MVP Office Servers and Services (Exchange Server)

    • Als Antwort markiert -- Chris -- Donnerstag, 6. Juli 2017 09:03
    Donnerstag, 6. Juli 2017 08:59
  • Hallo Robert,

    ich habe mir jetzt von einem Entwicklerkollegen die Typenserialisierung erklären lassen. Get-Member zeigt es wie du geschrieben hast ganz gut.

    komisch ist noch dieser Artikel! Es müsste eigentlich gehen wenn man die Exchange Tools installiert. Dies sind bei mir lokal wie auch am JOB Server installiert.

    https://stackoverflow.com/questions/29522961/type-difference-when-using-exchange-management-shell-and-remote-pssession

    You must have the Exchange management tools installed on the local machine to get it rendered as that object type

    Session:

    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://server/PowerShell/ -Authentication Kerberos
    Import-PSSession $Session -AllowClobber -DisableNameChecking

    Screenshot vom lokalen PC

    links (blau) ISE, rechts (schwarz) EMS


    Chris

    Freitag, 7. Juli 2017 08:17