riegerrobsi
Goto Top

Kontakte per Powershell zu Verteilerliste hinzufügen

Hallo liebe Forenteilnehmer,

ich habe eine Frage, kennt jemand von euch eine Möglichkeit per Powershell Kontakte in einer Verteilerliste zu hinterlegen?

Zum Hintergrund, am Wochenende gibt es eine wechselnde Bereitschaft, aber immer nur der Betreffende Kollege soll dann
die Nachrichten über die Verteilerliste erhalten, meine Idee war jetzt es gibt 4 Dateien die lauten dann KW1.csv KW2.csv KW3.csv
da steht der zuständige Mitarbeiter drin.

(Get-DAte).DayOfyear /7
'KW{0:0}' -f ((Get-Date).DayOfYear / 7)  
$KW = 'KW{0:0}' -f ((Get-Date).DayOfYear / 7)  

import-module activedirectory
import-CSV "c:\Util\$KW.csv" | % {   
Add-ADGroupMember -Identity 'Bereitschaft' -Members $_.UserName   
} 

Soweit so gut, jetzt müsste ich allerdings auch noch Kontakte hinzufügen, weis jemand wie ich das bewerkstelligen kann?

Vielen Dank schon einmal für eure Tipps

Content-Key: 369563

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

Ausgedruckt am: 28.03.2024 um 21:03 Uhr

Mitglied: emeriks
emeriks 28.03.2018 um 15:40:28 Uhr
Goto Top
Hi,
na genau so?
Die Kontakte müssen dann natürlich im AD (Exchange) angelegt sein und nicht im Outlook.

E.
Mitglied: riegerrobsi
riegerrobsi 28.03.2018 um 16:12:45 Uhr
Goto Top
Leider nein, kommt die Fehlermeldung dass es das Objekt nicht gibt.
Mitglied: emeriks
emeriks 28.03.2018 um 16:21:17 Uhr
Goto Top
Versuche mal dies:
$Group = [ADSI]"LDAP://CN=Gruppenname,OU=Bla Bla Bla,DC=domain,DC=tld"  
$Group.Member.Add("CN=Kontaktname,OU=Bla Bla Bla,DC=domain,DC=tld")   
$Group.psbase.CommitChanges() 
Mitglied: riegerrobsi
riegerrobsi 28.03.2018 um 16:46:44 Uhr
Goto Top
Das funktioniert zwar, habe ich vorhin auch gefunden, aber wie kann ich da eine Variable übergeben?
Bekomme dann nur Fehlermeldungen
Mitglied: emeriks
emeriks 28.03.2018 um 17:23:18 Uhr
Goto Top
aber wie kann ich da eine Variable übergeben
Na, so z.B.
$GroupDN = "CN=Gruppenname,OU=Bla Bla Bla,DC=domain,DC=tld"  
$ContactDN = "CN=Kontaktname,OU=Bla Bla Bla,DC=domain,DC=tld"  
$Group = [ADSI]"LDAP://$GroupDN"  
$Group.Member.Add($ContactDN) 
$Group.psbase.CommitChanges() 
Mitglied: riegerrobsi
riegerrobsi 29.03.2018 um 10:07:08 Uhr
Goto Top
Hallo Emeriks,

ja, so würde es funktionieren, habe jetzt leider nur noch keine Lösung wie ich von der csv den Wert so auslesen kann, dass er in Anführungszeichen steht, oder gibt es eine Möglichkeit sinngemäß die Variable zusammensetzt?
$User = "&CN=Kontaktname,OU=Bla Bla Bla,DC=domain,DC=tld&"
Mitglied: emeriks
emeriks 29.03.2018 aktualisiert um 10:37:52 Uhr
Goto Top
ja, so würde es funktionieren, habe jetzt leider nur noch keine Lösung wie ich von der csv den Wert so auslesen kann, dass er in Anführungszeichen steht,
Warum sollte er das? Ich fürchte, hier fehlen bei Dir allgemeine PowerShell-Grundlagen. Das hat ja nun nichts mehr mit dem ursprünglichen Thema zu tun.

oder gibt es eine Möglichkeit sinngemäß die Variable zusammensetzt?
$User = "&CN=Kontaktname,OU=Bla Bla Bla,DC=domain,DC=tld&"

$ContactName = "Müller, Peter"  

$ContactCN = "CN=" + $ContactName.Replace(",", "\,")  
$ContactDN = "CN=$ContactCN,CN=Kontaktname,OU=Bla Bla Bla,DC=domain,DC=tld"  

$Group.Member.Add($ContactDN)      <------ hier müssen keine "" mehr angegeben werden  


Edit

$BaseDN = ",CN=Kontaktname,OU=Bla Bla Bla,DC=domain,DC=tld"  

$ContactName = "Müller, Peter"  

$ContactCN = "CN=" + $ContactName.Replace(",", "\,")  
$ContactDN = "CN=$ContactCN$BaseDN"  

$Group.Member.Add($ContactDN)      <------ hier müssen keine "" mehr angegeben werden  
Mitglied: 135799
Lösung 135799 29.03.2018 aktualisiert um 12:18:23 Uhr
Goto Top
Oder auch so
import-CSV "c:\Util\Daten.csv" -delimiter "," | % {  
    $contact = ((Get-ADObject -LDAPFilter "(&(objectClass=Contact)(cn=$($_.Username)))").DistinguishedName)  
    if($contact){
        Set-ADGroup "Bereitschaft" -Add @{'member' = $contact }  
    }
} 
Gruß Schnuffi
Mitglied: riegerrobsi
riegerrobsi 29.03.2018 um 12:06:58 Uhr
Goto Top
Hallo Schnuffi,

bei deiner Variante bekomme ich diese Fehlermeldung:

Set-ADGroup : Das Argument für den Parameter "Add" kann nicht überprüft werden. Das Argument ist NULL, oder ein Element der
Argumentauflistung enthält einen NULL-Wert.
In Zeile:4 Zeichen:26

back-to-topSet-ADGroup Whatsup -Add @{'Member' = ((Get-ADObject -LDAPFilter "(&(objectClass ...

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidData: (face-smile [Set-ADGroup], ParameterBindingValidationException
+ FullyQualifiedErrorId : ParameterArgumentValidationError,Microsoft.ActiveDirectory.Management.Commands.SetADGroup
Mitglied: 135799
Lösung 135799 29.03.2018 aktualisiert um 12:19:29 Uhr
Goto Top
Dann hast du nicht den CN (Common-Name) in deiner CSV benutzt oder die Eigenschaft für den Namen des Kontakts in deiner CSV heißt anders (nicht Username) ... Wurde hier einwandfrei getestet , sofern natürlich der Kontakt existiert, ansonsten musst du noch eine IF-Abfrage einbauen!
Mitglied: riegerrobsi
riegerrobsi 29.03.2018 um 15:38:27 Uhr
Goto Top
Vielen Dank für Euere Hilfe, so hat es dann funktioniert.
Mitglied: emeriks
emeriks 29.03.2018 um 15:41:41 Uhr
Goto Top
Och, keine Ursache.