none
Powershell: Mailboxen filtern und zu DistributionGroup hinzufügen RRS feed

  • Frage

  • Hallo zusammen,

    ich bin neu in der Powershell-Welt; stecke gerade fest und würde mich über Hilfe freuen:

    Ich filtere User-Mailboxen...

    Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox | Where {$_.userPrincipalName -like "*xxx*"}

    das klappt wunderbar.

    Jetzt möchte ich diese User einer Distribution-Group hinzufügen und versuche das so:

    Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox | Where {$_.userPrincipalName -like "*xxx*"} | Add-DistributionGroupMember -Identity "xxx"

    Das klappt nicht.

    Kann mir bitte jemand einen Hinweis geben, was ich falsch mache?

    Vielen Dank und schönen Gruß

    Dirk

    Dienstag, 18. Juli 2017 18:35

Antworten

  • Versuche mal:

    Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox | Where {$_.userPrincipalName -like "*xxx*"} | %{Add-DistributionGroupMember -Identity "xxx" -Member $_ -BypassSecurityGroupManagerCheck}

    On-premise geht es auch ohne foreach, könnte sein das es per RemotePowershell nur mit funktioniert.




    Freitag, 4. August 2017 08:00
  • Oder diese Variation:

    Add-DistributionGroupMember -Identity "xxx" -Member ((Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox | where {$_.userPrincipalName -like "*xxx*"}).Name)

    Gruß Christian

    • Als Antwort markiert Dirk Klemme Donnerstag, 17. August 2017 12:25
    Donnerstag, 17. August 2017 08:46

Alle Antworten

  • Moin,

    "das klappt nicht" ist keine Fehlerbeschreibung. Wenn "xxx" in Deinem Beispiel der Name der Gruppe ist, machst Du alles richtig. Wenn Du eine Fehlermeldung kriegst, musst Du sie hier posten. Ein beliebter Denkfehler sind genehmigungspflichtige Gruppen. Die sind auch dann genehmigingspflichtig, wenn ein Admin die Mitglieder hinzufügt. Um das zu umgehen, gibt es einen Parameter.


    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

    Dienstag, 18. Juli 2017 20:50
  • Moin,

    vielen Dank für die konstruktive Antwort. Bin kein geübter Poster und gelobe Besserung :-)

    Ich habe es jetzt so ergänzt 

    Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox | Where {$_.userPrincipalName -like "*xxx*"} | Add-DistributionGroupMember -Identity "xxx" -BypassSecurityGroupManagerCheck

    und erhalte die Fehlermeldung:

    The input object cannot be bound to any parameters for the command either because the command does not take pipeline input or the input and its properties do not match any of the parameters that take pipeline input.
        + CategoryInfo          : InvalidArgument: (XXX:PSObject) [Add-DistributionGroupMember], ParameterBindingException
        + FullyQualifiedErrorId : InputObjectNotBound,Add-DistributionGroupMember
        + PSComputerName        : outlook.office365.com

    (XXX im Befehl und der Fehlermeldung dient der Anonymisierung, die Inhalte darin sind überprüft korrekt)

    Habe ich den richtigen Parameter erwischt?

    Freue mich über erneute Info.

    Danke sehr!

    Schönen Gruß

    Dirk

    Freitag, 4. August 2017 05:12
  • Versuche mal:

    Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox | Where {$_.userPrincipalName -like "*xxx*"} | %{Add-DistributionGroupMember -Identity "xxx" -Member $_ -BypassSecurityGroupManagerCheck}

    On-premise geht es auch ohne foreach, könnte sein das es per RemotePowershell nur mit funktioniert.




    Freitag, 4. August 2017 08:00
  • leider immer noch nicht ...

    Cannot process argument transformation on parameter 'Member'. Cannot convert value "Grafik" to type 
    "Microsoft.Exchange.Configuration.Tasks.RecipientWithAdUserGroupIdParameter`1[Microsoft.Exchange.Configuration.Tasks.RecipientIdParameter]". Error: "Cannot convert hashtable to an object of 
    the following type: Microsoft.Exchange.Configuration.Tasks.RecipientWithAdUserGroupIdParameter`1[Microsoft.Exchange.Configuration.Tasks.RecipientIdParameter]. Hashtable-to-Object conversion 
    is not supported in restricted language mode or a Data section."
        + CategoryInfo          : InvalidData: (:) [Add-DistributionGroupMember], ParameterBindin...mationException
        + FullyQualifiedErrorId : ParameterArgumentTransformationError,Add-DistributionGroupMember
        + PSComputerName        : outlook.office365.com
    es scheint der falsche Datentyp übergeben zu werden, aber ich finde nicht raus, welcher der richtige wäre...

    Mittwoch, 16. August 2017 14:56
  • Hallo,

    teste mal die Variation:
    $mailboxen=(Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox)
    foreach ($mailbox in $mailboxen)
        {
        if ($mailbox.UserPrincipalName -like "*xxx*")
            {
            Add-DistributionGroupMember -Identity "xxx" -Member "$mailbox"
            }
        }

    Anscheinend gehen der der Pipe-Variation die Inhalte verloren.

    Gruß Christian

    Donnerstag, 17. August 2017 07:40
  • Oder diese Variation:

    Add-DistributionGroupMember -Identity "xxx" -Member ((Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox | where {$_.userPrincipalName -like "*xxx*"}).Name)

    Gruß Christian

    • Als Antwort markiert Dirk Klemme Donnerstag, 17. August 2017 12:25
    Donnerstag, 17. August 2017 08:46
  • Hi Christian ,

    habe die 2. Variante probiert und sie führte zum Erfolg!

    Habe wieder viel gelernt!

    Vielen Dank und Gruß

    Dirk

    Donnerstag, 17. August 2017 12:26