geocast
Goto Top

Powershell E-Mail Adressen auslesen

Hallo Zusammen

ich hänge bei einem kleinen Problem.
Ich will in Office 365 aus einer Gruppe alle E-Mail Adressen auslesen und damit dann sich gegenseitig Kalenderberechtigung vergeben.

Soweit bin ich bisher gekommen

$user_extern = @()
$user_intern = @()
$member = @()
$member2 = @()

$user_extern = Get-MsolGroupMember -GroupObjectId (Get-MsolGroup | where DisplayName -EQ ("Verteiler " + $gs)).ObjectId | Select EMailAddress  
$user_intern = Get-MsolGroupMember -GroupObjectId (Get-MsolGroup | where DisplayName -EQ ("Verteiler " + $gs)).ObjectId | Select EMailAddress  

foreach($member in $user_extern){
	foreach($member2 in $user_intern) { 
             Add-MailboxFolderPermission -Identity ($member2+":\Kalender") -User $member -AccessRights PublishingEditor  
        }
}

Die Adressen werden ausgelesen. Aber es kommt dann folgende Meldung

Fehler beim Aufrufen der Methode, da [System.Management.Automation.PSObject] keine Methode mit dem Namen "op_Addition" enthält.  
In C:\PowerShell\CalendarRights.ps1:24 Zeichen:5
+     ($user_extern[$i] + ":\Kalender")  
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (op_Addition:String) , RuntimeException
    + FullyQualifiedErrorId : MethodNotFound
 

Nach meiner Recherche sollte es eigentlich funktionieren mit dem @() wie oben eingefügt.
Aber wenn ich recht überlege, wird mit der ersten Abfrage von Get-MsolGroupMember ein Array ausgelesen das irgendwie so aussieht:

email1{user@firma.de}
email2{user@firma.de}

Also wenn ich später etwas anhängen will funktioniert das nicht.
Weiß jemand wie ich nur die reinen E-Mail Adressen aus einer Gruppe auslesen kann?

Danke für eure Hilfe!

Content-Key: 272252

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

Printed on: April 24, 2024 at 09:04 o'clock

Mitglied: 114757
Solution 114757 May 18, 2015 updated at 15:26:56 (UTC)
Goto Top
Schreibe am Ende von Zeile 7 und 8 statt select EMailAddress
 ...... | select -Expand EMailAddress
Dann ist es ein reines Array aus Strings, ansonsten ist es immer noch ein Object dessen Eigenschaft du explizit abrufen musst.

Gruß jodel32
Member: geocast
geocast May 18, 2015 at 15:27:55 (UTC)
Goto Top
Super hat geklappt Danke!!

Jetzt habe ich nur noch das Problem, das manche mit :\calendar angesprochen werden müssen statt :\kalender

Aber das ist ein andere Problem.

Schönen Abend
Mitglied: 114757
114757 May 18, 2015 updated at 15:37:22 (UTC)
Goto Top
Zitat von @geocast:
Jetzt habe ich nur noch das Problem, das manche mit :\calendar angesprochen werden müssen statt :\kalender

Aber das ist ein andere Problem.

Kein Problem den lokalisierten Namen bekommst du hiermit:
$foldername = [string](Get-mailboxfolderstatistics $member -folderscope calendar).Name
Schönen Abend
Ebenso

Gruß jodel32
Member: geocast
geocast May 19, 2015 updated at 06:29:58 (UTC)
Goto Top
Und wiedermal prombt und einfach.

Vielen Dank zum zweiten mal!

Edit: Habe es gerade probiert. Auch laut einem Eintrag im Support Forum, geht -folderscope nicht mit Exchange Online. Allerdings habe ich es mit folgendem Befehl abgefangen:

$foldername = [string](Get-MailboxFolderStatistics -Identity $member2 | where-object {($_.name -eq "Kalender") -or ($_.name -eq "Calendar")}).Name