none
Import-CSV RRS feed

  • Frage

  • Hallo,
    ich würde gerne aus einer *.csv Datei E-Mail Kontakte im AD erstellen.
    Die CSV ist wie folgt aufgebaut:

    ANZEIGENAME,POSTFACHTYP,E-MAIL,ADRESSE,FIRMA,LAND/REGION,ABTEILUNG,VORNAME,NACHNAME,TELEFON,POSTLEITZAHL                                                                                                                                                        

    Ich habe folgendes Skript als Beispiel gefunden:

    Import-Csv “contacts.csv” | ForEach {New-MailContact -Name $_.Name -Firstname $_.FirstName -LastName $_.LastName -ExternalEmailAddress $_.ExternalEmailAddress -OrganizationalUnit “Domainname/OUname”}

    Mir ist jetzt nicht ganz klar wie ich das anhand meiner *.csv ersetzen muss? -Firstname $_.FirstName ersetzen durch -Vorname $_.Vorname?
    Wie lauten dann die Variablen f. Anzeigename, Firma, Adresse, Land/Region, Abteilung, Telefon, Postleitzahl...…

    Danke und Gruß Dennis


    • Bearbeitet HaschkeD Mittwoch, 1. Juli 2020 12:53
    Mittwoch, 1. Juli 2020 12:53

Antworten

  • Mittels $_.<Feldname der CSV>, da die 1. Zeile einer CSV die Namen der Eigenschaften enthält.

    • Als Antwort markiert HaschkeD Mittwoch, 1. Juli 2020 13:16
    Mittwoch, 1. Juli 2020 13:04
  • Nein, Klassen, Methoden und Eigenschaften sind immer identsich und unabhängig von der Sprache:
    https://docs.microsoft.com/en-us/powershell/module/exchange/new-mailcontact?view=exchange-ps
    • Als Antwort markiert HaschkeD Mittwoch, 1. Juli 2020 13:16
    Mittwoch, 1. Juli 2020 13:15
  • Moin,

    versuch mal $_.'E-MAIL-ADRESSE' ;-)


    Evgenij Smirnov

    http://evgenij.smirnov.de

    • Als Antwort markiert HaschkeD Donnerstag, 9. Juli 2020 07:53
    Donnerstag, 9. Juli 2020 07:50

Alle Antworten

  • Mittels $_.<Feldname der CSV>, da die 1. Zeile einer CSV die Namen der Eigenschaften enthält.

    • Als Antwort markiert HaschkeD Mittwoch, 1. Juli 2020 13:16
    Mittwoch, 1. Juli 2020 13:04
  • OK. Und der Wert davor entspricht dem AD Attribut?
    Also bei deutschem AD dann Vorname, Nachname usw?

    Mittwoch, 1. Juli 2020 13:10
  • Nein, Klassen, Methoden und Eigenschaften sind immer identsich und unabhängig von der Sprache:
    https://docs.microsoft.com/en-us/powershell/module/exchange/new-mailcontact?view=exchange-ps
    • Als Antwort markiert HaschkeD Mittwoch, 1. Juli 2020 13:16
    Mittwoch, 1. Juli 2020 13:15
  • Perfekt, dann versuch ich mir das mal zu bauen...vielen Dank.
    Mittwoch, 1. Juli 2020 13:16
  • Ist

    FIRMA,LAND/REGION,ABTEILUNG,TELEFON,POSTLEITZAHL

    da nicht möglich?
    In dem Link  finde ich dafür keinen Parameter.       

    Mittwoch, 1. Juli 2020 14:11
  • Ist

    FIRMA,LAND/REGION,ABTEILUNG,TELEFON,POSTLEITZAHL

    da nicht möglich?
    In dem Link  finde ich dafür keinen Parameter.       

    Es ist nahezu alles möglich - nur vielelicht nicht direkt beim Anlegen eines Kontakts. Mit Set-MailContact kannst Du einen existierenden Kontakt jederzeit weiter bearbeiten.

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 1. Juli 2020 14:20
  • Namen, die nicht den Namensregeln entsprechen, packst du in Anführungszeichen:

    $_."FIRMA"
    $_."LAND/REGION"

    usw.

    Du kannst dir den Inhalt auch erst mal so (z.B. per ISE) ansehen:
    https://www.tek-tips.com/viewthread.cfm?qid=1688057

    $file = Import-CSV C:\PS\IP_list.csv
    ForEach ($record in $file){
      $record
    }

    Mittwoch, 1. Juli 2020 14:25
  • @Der Suchende.
    Also die Ausgabe per ISE sieht gut aus. Auch Abteilung, Telefon gibt er mit aus.....

    Aber per New-MailContact ist es dann nicht möglich z. B. Telefon, Abteilung direkt in einem mit anzulegen oder? Das dann nur über Set-MailContact?
    • Bearbeitet HaschkeD Mittwoch, 8. Juli 2020 13:37
    Mittwoch, 8. Juli 2020 13:35
  • Moin,

    auch Set-MailContact wird Dir da nicht helfen, Du musst Set-Contact bemühen ;-)


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Mittwoch, 8. Juli 2020 14:01
  • OK, danke.
    Hab jetzt mal versucht zu importieren, dann kommt das:

    Was mache ich da noch falsch?

    Donnerstag, 9. Juli 2020 07:24
  • Moin,

    versuch mal $_.'E-MAIL-ADRESSE' ;-)


    Evgenij Smirnov

    http://evgenij.smirnov.de

    • Als Antwort markiert HaschkeD Donnerstag, 9. Juli 2020 07:53
    Donnerstag, 9. Juli 2020 07:50
  • Jap, es geht :-) :-)
    Zum Verständnis warum in ' ?
    Wg. den - ?
    Donnerstag, 9. Juli 2020 07:53

  • Wg. den - ?
    so isses.

    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 9. Juli 2020 07:56
  • Hier eine ganz gute Erklärung:
    https://www.itnator.net/unterschied-hochkomma-und-anfuehrungszeichen-in-powershell/

    Samstag, 11. Juli 2020 15:45
  • Wie müsste es aussehen wenn ich jetzt z.B. die Telefonnummern noch mit eintragen möchte?
    Denke ja so. 

    Set-Contact -Identity "xyz.local/Users/Max.Mustermann" -Phone "01234567" + weitere Parameter.

    Bekomme ich das auch hin das er mir die *.csv nimmt oder muss ich dann ne neue xlsx bauen für jeden einzelnen Kontakt und daraus ein *.ps1 Skript bauen? 

    Dienstag, 14. Juli 2020 10:03
  • Klar kriegst Du das hin :-) Du musst halt im Script Block, den Du im ForEach-Object aufrufst, mehrere Befehle ausführen - zuerst New-Mailcontact, dann warten, bis es sich durchrepliziert hat, dann Set-Contact.

    Welche AD-Attribute Du mit Set-Contact direkt als Parameter setzen kannst, steht in der Hilfe.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Dienstag, 14. Juli 2020 10:21
  • ... zuerst New-Mailcontact, dann warten, bis es sich durchrepliziert hat, dann Set-Contact.

    Könnte man nicht für New-MailContact den Parameter -DomainController angeben? Dann könnte man sich evtl. "... dann warten ..." ersparen.  ;-)

    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Dienstag, 14. Juli 2020 13:07
  • Absolut. Dann müsste man aber etwas einbauen, was sicherstellt, dass dieser spezielle DC auch tatsächlich zu dem Zeitpunkt online ist.

    Ich mache mehr so unattended Zeug, daher ist 3 Minuten warten meistens kein Problem, irgendwelche Wartungsfenster hingegen schon. Aber klar, zur manuellen Ausführung kann man das durchaus festpinnen und das Warten reduzieren.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Dienstag, 14. Juli 2020 13:23
  • $PDC = ( Get-ADDomain -Current LoggedOnUser ).PDCEmulator

    Der PDC ist eigentlich immer erreichbar :)


    Greetings/Grüße, Martin - https://mvp.microsoft.com/en-us/PublicProfile/5000017 Mal ein gutes Buch über GPOs lesen? - http://www.amazon.de/Windows-Server-2012--8-Gruppenrichtlinien/dp/3866456956 Good or bad GPOs? My blog - http://evilgpo.blogspot.com And if IT bothers me? Coke bottle design refreshment - http://sdrv.ms/14t35cq

    Dienstag, 14. Juli 2020 15:16
  • Der PDC ist eigentlich immer erreichbar :)

    In einer wohlgemanagten Umgebung ;-)

    EDIT: Das ist halt der Unterschied zwischen "ich scripte, um mir und meinen geschätzten Kollegen die Arbeit zu erleichtern" und "ich skripte, dann gehe ich weg, und dann kommen die Cowboys" ;-)


    Evgenij Smirnov

    http://evgenij.smirnov.de


    Dienstag, 14. Juli 2020 15:50