Benutzer mit den meisten Antworten
Powershellscript Textdatei erstellen mit gleichem Text (Schleife)und varibabeln Werten aus csv-import

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.deDie 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
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.deNun 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
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) -
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.
-
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-workshopMeine 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) -
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 Zeile2jetzt 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 -
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.deNun 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
-
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.deIch 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
-
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)