Zum Inhalt wechseln


Foto

Berechtigung zum Senden an ein Postfach


  • Bitte melde dich an um zu Antworten
9 Antworten in diesem Thema

#1 blue joker

blue joker

    Newbie

  • 18 Beiträge

 

Geschrieben 28. September 2017 - 12:09

Hallo,

 

ich bin auf der Suche meines Denkfehlers.

 

Mit dem folgenden Code möchte ich überprüfen, ob ein User berechtigt ist, an ein bestimmtes Postfach ("Export") ein Mail zu senden.

Hiezu lese ich die Eigenschaft "AcceptMessagesOnlyFrom" des Postfaches aus und speichere sie in einer Variable ($MailExportUser). Danach überprüfe ich mit der If-Anweisung, ob sich die Kennung in der Liste befindet.

$Kennung = "abcde" #SamAccountName eines Users
$MailExportUser = Get-Mailbox -Identity "Export" | Select-Object AcceptMessagesOnlyFrom

If ($MailExportUser -contains $Kennung -eq $true) 
    { "Ja"  }
Else
    { "Nein"  }

Das Problem dabei ist, dass ich immer nur "Ja" zurückbekomme! Und ich verstehe nicht warum?!? :confused:

Lg, Joker

 



#2 NilsK

NilsK

    Expert Member

  • 12.395 Beiträge

 

Geschrieben 28. September 2017 - 12:11

Moin,

 

enthält $MailExportUser denn überhaupt die Daten, die du brauchst?

 

Gruß, Nils


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#3 blue joker

blue joker

    Newbie

  • 18 Beiträge

 

Geschrieben 28. September 2017 - 12:23

Bei $MailExportUser bekomme ich zurück:

 

 

Was mir dabei gerade auffällt ist, dass hier nicht der SamAccountName sondern der CanonicalName angeführt ist!

PS C:> $MailExportUser

AcceptMessagesOnlyFrom
----------------------
{firma.de/Einkauf/Mustermann Max, firma.de/Einkauf/Musterfrau Mathilde, firma.de/Lager/Doe Jo...}

Bearbeitet von blue joker, 28. September 2017 - 12:24.


#4 NilsK

NilsK

    Expert Member

  • 12.395 Beiträge

 

Geschrieben 28. September 2017 - 12:29

Moin,

 

wenn du wie hier ein Array zurückbekommst, dann würde ich es mir einfach machen und mit einer ForEach-Schleife prüfen, ob mein gesuchtes Objekt darin vorkommt. Da kannst du mit Stolperstellen wie Datenformaten usw. leichter umgehen.

 

Gruß, Nils


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#5 blue joker

blue joker

    Newbie

  • 18 Beiträge

 

Geschrieben 28. September 2017 - 12:37

Wenn es nur ein Array wäre, denn ...

PS C:\> $MailExportUser -is [system.array]
False

... da kommt ein False retour! :cry:

 

 

Siehe auch:

PS C:\> $MailExportUser.GetType()

IsPublic IsSerial Name                                     BaseType                                                                                                                     
-------- -------- ----                                     --------                                                                                                                     
True     False    PSCustomObject                           System.Object  

Das schaut nicht nach einem Array aus. :(



#6 NilsK

NilsK

    Expert Member

  • 12.395 Beiträge

 

Geschrieben 28. September 2017 - 12:45

Moin,

 

versuch doch mal bitte, $MailExportUser mit einer ForEach-Schleife zu durchlaufen. Ich gehe davon aus, dass das funktioniert. Deine vorherige Ausgabe deutet darauf hin, dass du eine Sammlung von Objekten zurückbekommst, auch wenn PowerShell die formal nicht als Array deklariert.

 

Mangels Umgebung kann ich das nicht testen.

 

Gruß, Nils


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#7 blue joker

blue joker

    Newbie

  • 18 Beiträge

 

Geschrieben 28. September 2017 - 12:55

Leider funktioniert die Schleife nicht!

PS C:\> 
foreach ($ExportUser in $MailExportUser)
    {
       $ExportUser 
    }

AcceptMessagesOnlyFrom                                                                                                                                                                  
----------------------                                                                                                                                                                  
{firma.de/Einkauf/Mustermann Max, firma.de/Einkauf/Musterfrau Mathilde, firma.de/Lager/Doe Jo...

Wenn ich das richtig verstanden habe, sollte $MailExportUser[0] mir den ersten Eintrag liefern, doch ich bekomme das hier zurück:

PS C:\> $MailExportUser[0]

AcceptMessagesOnlyFrom

----------------------
                                 
{firma.de/Einkauf/Mustermann Max, firma.de/Einkauf/Musterfrau Mathilde, firma.de/Lager/Doe Jo...

Der zweite Eintrag ist dann schon leer:

PS C:\> $MailExportUser[1]

PS C:\>


#8 Dukel

Dukel

    Board Veteran

  • 9.298 Beiträge

 

Geschrieben 28. September 2017 - 13:13

Durch das "| SELECT".

 

Nimm mal:

$MailExportUser = (Get-Mailbox -Identity "Export").AcceptMessagesOnlyFrom


Stop making stupid people famous.


#9 NilsK

NilsK

    Expert Member

  • 12.395 Beiträge

 

Geschrieben 28. September 2017 - 13:19   Lösung

Moin,

 

versuch mal:

foreach ($ExportUser in $MailExportUser.AcceptMessagesOnlyFrom)

Du hast es ja mit einer Eigenschaft des ursprünglichen Objektes zu tun, die ihrerseits Objekte enthält.

 

Gruß, Nils


Nils Kaczenski

MVP Cloud and Datacenter Management
... der beste Schritt zur Problemlösung: Anforderungen definieren!

Kostenlosen Support gibt es nur im Forum, nicht privat!


#10 blue joker

blue joker

    Newbie

  • 18 Beiträge

 

Geschrieben 29. September 2017 - 08:11

@Nils,

danke, so hat es funktioniert! :jau: