none
Powershellscript Textdatei erstellen mit gleichem Text (Schleife)und varibabeln Werten aus csv-import RRS feed

  • Frage

  • Hallo,

    Ich muss folgende Textdatei erstellen:

    [test1 @ alt.test.de-Outbound]
    Action=an den Absender zurückgeleitet
    Restrict=Yes
    Address0=test1 @ test.de
    [test2 @ alt.test.de-Outbound]
    Action=an den Absender zurückgeleitet
    Restrict=Yes
    Address0=test 2@ test.de
    [test3 @ alt.test.de-Outbound]
    Action=an den Absender zurückgeleitet
    Restrict=Yes
    Address0=test3@ test.de

    Die E-Mailadressen wären die Variabeln zum einen das vor dem "-Outbound" und zum zweitens das hinter "Address0="

    Ich würde Import-csv c:\test\test.csv für die E-Mail Adressen wählen aber weiter weiss ich nicht.Bitte um Hilfe

    Freitag, 20. September 2013 14:17

Antworten

  • Deine Erklärungen sind wirklich schwer zu verstehen.

    Ich vermute mal du hast einen CSV Datei mit dem folgenden Inhalt

    alteAdresse,neueAdresse
    test1@alt.test.de,test1@test.de
    test2@alt.test.de,test2@test.de
    test3@alt.test.de,test3@test.de

    Nun vermute ich, das du in dieser CSV Datei 200 E-Mail Adressen hast (alt und neu)

    Nun möchtest du für jede E-mail Adress Zeile in der CSV einen Eintrag in einer Textdatei erstellen.

    Etwa so:

    # Pfad zur CSV Datei
    $CsvObjekte = Import-csv 'C:\temp\test.csv'
    # Ausgabe Pfad für Textdatei
    $TextDatei = 'C:\temp\Out.txt'
    
    # jedes Objekt (Zeile) von der CSV Datei durchlaufen
    ForEach($CSVObjekt in $CsvObjekte)  {
    
    # Das Aktuelle Objekt das gerade verarbeitet wird ist in der Variablen $CSVObjekt
    # $CSVObjekt.alteAdresse
    # $CSVObjekt.neueAdresse
    	
    # Text zusammen bauen (variablen durch Ihren Inhalt ersetzt und eingefügt)
    $OutText = @"
    [$($CSVObjekt.alteAdresse)-Outbound]
    Action=an den Absender zurückgeleitet
    Restrict=Yes" 
    Address0=$($CSVObjekt.neueAdresse)
    "@	
    
    	# ausgabe in die Textdatei (der text wird angehängt)
    	Out-File -InputObject $OutText -FilePath $TextDatei -Append
    }


    Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    Mein deutscher PowerShell Blog
    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)

    • Bearbeitet Peter Kriegel Montag, 23. September 2013 12:31 sadasd
    • Als Antwort vorgeschlagen Peter Kriegel Dienstag, 24. September 2013 07:03
    • Als Antwort markiert MarkBrandenburg Dienstag, 24. September 2013 07:31
    Montag, 23. September 2013 12:30

Alle Antworten

  • Hallo Mark!

    Hallo,

    Ich muss folgende Textdatei erstellen:

    Die Textdatei kannst du ganz leicht mit out-File erstellen.

    In PowerShell gibt es für vorformatierten Text die Speziellen Here-Strings die mit @" beginnen und mit "@ aufhören.

    $Text = @"
    [test1 @ alt.test.de-Outbound]
    Action=an den Absender zurückgeleitet
    Restrict=Yes
    Address0=test1 @ test.de
    [test2 @ alt.test.de-Outbound]
    Action=an den Absender zurückgeleitet
    Restrict=Yes
    Address0=test 2@ test.de
    [test3 @ alt.test.de-Outbound]
    Action=an den Absender zurückgeleitet
    Restrict=Yes
    Address0=test3@ test.de
    "@
    
    $Text | Out-File 'C:\temp\texdatei.txt'

    Die E-Mailadressen wären die Variabeln zum einen das vor dem "-Outbound" und zum zweitens das hinter "Address0="

    Ich würde Import-csv c:\test\test.csv für die E-Mail Adressen wählen aber weiter weiss ich nicht.Bitte um Hilfe

    Deine Erklärung ist nicht zu verstehen.

    Variablen bekommen ja immer einen Wert. Wo kommt der her?

    Was willst du insgesammt erreichen?


    Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    Mein deutscher PowerShell Blog
    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)

    Freitag, 20. September 2013 16:12
  • Hallo Peter,

    Ich habe eine csv-Datei mit den E-Mailadressen .In der Kopfzeile steht alteAdresse,neueAdresse. Dann folgen die E-Mail Adressen .Das ist mein Imput und den möchte ich in o.g Text einfügen .

    Diese generiert Textdatei brauche ich für eine E-Mail Software.Die User benutzen dieses als Nachschausystem und mit dieser Datei wird verhindert ,dass sie von dort aus keine  E-Mails an die Welt ,aber an sich selbst in das neue MAilsystem zu senden.Sozusagen als Datenübernahme nach bedarf.

    Montag, 23. September 2013 06:58
  • Du hast wahrscheinlich schon probleme die CSV Datei richtig einzulesen und zu verarbeiten!?

    Richtig?

    Dann lies mal meinem kleinen Import-CSV Workshop:
    http://www.admin-source.de/BlogDeu/963/import-csv-workshop


    Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    Mein deutscher PowerShell Blog
    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)

    Montag, 23. September 2013 11:01
  • Das auch .Mein erstes Problem ist der Textblock den ich in 2000facher ausführung in meiner Textdatei brauche.Ich möchte ja nicht 2000 mal strg+V drücken.Deswegen meine Idee mit der Schleife.

    [VaribaleE-Mail Alt aus Zeile2 der csv]
    Action=an den Absender zurückgeleitet
    Restrict=Yes
    Address0=variableE-Mail neu aus Zeile2  

    jetzt den Textblock kopieren

    [VaribaleE-Mail Alt aus Zeile3 der csv]
    Action=an den Absender zurückgeleitet
    Restrict=Yes
    Address0=variableE-Mail neu aus Zeile3   u.s.w

    Montag, 23. September 2013 11:32
  • Deine Erklärungen sind wirklich schwer zu verstehen.

    Ich vermute mal du hast einen CSV Datei mit dem folgenden Inhalt

    alteAdresse,neueAdresse
    test1@alt.test.de,test1@test.de
    test2@alt.test.de,test2@test.de
    test3@alt.test.de,test3@test.de

    Nun vermute ich, das du in dieser CSV Datei 200 E-Mail Adressen hast (alt und neu)

    Nun möchtest du für jede E-mail Adress Zeile in der CSV einen Eintrag in einer Textdatei erstellen.

    Etwa so:

    # Pfad zur CSV Datei
    $CsvObjekte = Import-csv 'C:\temp\test.csv'
    # Ausgabe Pfad für Textdatei
    $TextDatei = 'C:\temp\Out.txt'
    
    # jedes Objekt (Zeile) von der CSV Datei durchlaufen
    ForEach($CSVObjekt in $CsvObjekte)  {
    
    # Das Aktuelle Objekt das gerade verarbeitet wird ist in der Variablen $CSVObjekt
    # $CSVObjekt.alteAdresse
    # $CSVObjekt.neueAdresse
    	
    # Text zusammen bauen (variablen durch Ihren Inhalt ersetzt und eingefügt)
    $OutText = @"
    [$($CSVObjekt.alteAdresse)-Outbound]
    Action=an den Absender zurückgeleitet
    Restrict=Yes" 
    Address0=$($CSVObjekt.neueAdresse)
    "@	
    
    	# ausgabe in die Textdatei (der text wird angehängt)
    	Out-File -InputObject $OutText -FilePath $TextDatei -Append
    }


    Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    Mein deutscher PowerShell Blog
    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)

    • Bearbeitet Peter Kriegel Montag, 23. September 2013 12:31 sadasd
    • Als Antwort vorgeschlagen Peter Kriegel Dienstag, 24. September 2013 07:03
    • Als Antwort markiert MarkBrandenburg Dienstag, 24. September 2013 07:31
    Montag, 23. September 2013 12:30
  • Super.Vielen Dank.Genau das wollte ich.Pro User steht jetzt alles in einer Zeile.Wie mache ich das jetzt ,das es wie oben von mir geschrieben , untereinander steht. 
    Montag, 23. September 2013 13:47
  • Habe es selbst rausgefunden.Problem ist also gelößt.Tausend Dank
    Montag, 23. September 2013 14:24
  • Hast du mein Script 1:1: übernommen ?

    Bei mir steht das genau so in meiner ausgabe Datei:

    [test1@alt.test.de-Outbound]
    Action=an den Absender zurückgeleitet
    Restrict=Yes"
    Address0=test1@test.de
    [test2@alt.test.de-Outbound]
    Action=an den Absender zurückgeleitet
    Restrict=Yes"
    Address0=test2@test.de
    [test3@alt.test.de-Outbound]
    Action=an den Absender zurückgeleitet
    Restrict=Yes"
    Address0=test3@test.de

    Ich benutze in meinem Code einen Here-String (Here-Zeichenfolge)

    So kann man in PowerShell vorformatierten Text verwenden der genauso wie er in dem Here-String steht verwendet wird.

    Here-Strings:

    Here-Zeichenfolgen können eines der nachstehenden Formate
    aufweisen. <Eingabetaste> steht dabei für das ausgeblendete
    Zeilenvorschubzeichen oder das ausgeblendete Neue-Zeile-Zeichen,
    das hinzugefügt wird, wenn Sie die EINGABETASTE drücken.

    @"<Eingabetaste>

    Text....<Eingabetaste>

    Text ...<Eingabetaste>

    "@<Eingabetaste>

    Unabhängig vom verwendeten Format muss das schließende
    Anführungszeichen das erste Zeichen in der Zeile darstellen.

    lies mal dazu :

    Get-Help about_Quoting_Rules.htm

    http://www.colorconsole.de/PS_Windows/de/about_Quoting_Rules.htm


    Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    Mein deutscher PowerShell Blog
    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)

    • Bearbeitet Peter Kriegel Montag, 23. September 2013 14:40 asdasd
    Montag, 23. September 2013 14:26
  • Dann lies bitte noch das hier:

    Wozu Antworten markieren und für Beiträge abstimmen?


    Meine PowerShell Artikel, Buchtipps und kostenlose PowerShell Tutorials + E-Books
    Mein deutscher PowerShell Blog
    Mein 21 Teiliger PowerShell Video Grundlehrgang
    Deutsche PowerShell Videos auf Youtube
    Folge mir auf:
    Twitter | Facebook | Google+ | Deutsches PowerShell Forum (TechNet)

    Dienstag, 24. September 2013 07:04
  • Ja ich hatte es komplett übernommen.Das öffnen der out.txt ,standartmäßig mit Notepad, hat es nur falsch dargestellt.Mit Notepad++ sieht alles richtig aus.

    Vielen Dank nochmal

    Dienstag, 24. September 2013 07:31