133202

Mehrzeiligen Powershell-Befehl mit Batch ausführen

Hallo Ihr,

Mehrzeiligen Powershell-Befehl mit Batch ausführen, geht das überhaupt?
Ich wollte nachfolgenden Code (Powershell-Befehl) über eine Batch mit "powershell -Command" ausführen, geht das überhaupt:

$in = "C:\csvdatei.csv"  
$out = "C:\korrigiert.csv"  
$newcsv = @()
import-csv $in -Delimiter ";" | %{$newcsv += New-Object PSObject -Property @{"Kundennummer Vorname Nachname"="$($_.Kundennummer) $($_.Vorname) $($_.Nachname)";"Firma"=$_.Firma}}  
$newcsv | Export-Csv $out -Delimiter ";" -NoTypeInformation -Encoding UTF8  

Gruß! face-smile
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 338668

Url: https://administrator.de/forum/mehrzeiligen-powershell-befehl-mit-batch-ausfuehren-338668.html

Ausgedruckt am: 12.05.2025 um 23:05 Uhr

132895
Lösung 132895 23.05.2017 aktualisiert um 16:31:07 Uhr
Goto Top
Hättest du mal in die Doku geschaut, hättest du gesehen das das Semikolon in Powershell das Ende eine Befehlszeile bedeutet face-wink, du damit also mehrere Zeilen hintereinander klemmen kannst, zusätzlich gibt es Bsonderheiten zu beachten wie Batch Sonderzeichen wie ein einfaches Prozentzeichen (%) welches hier etwas für das Foreach-Object verdoppelt werden muss ...
powershell -Executionpolicy ByPass -Command "$in = 'C:\csvdatei.csv';$out = 'C:\korrigiert.csv';$newcsv = @();import-csv $in -Delimiter ';' | %%{$newcsv += New-Object PSObject -Property @{'Kundennummer Vorname Nachname'=$_.Kundennummer + ' ' + $_.Vorname + ' ' + $_.Nachname;'Firma'=$_.Firma}};$newcsv | Export-Csv $out -Delimiter ';' -NoTypeInformation -Encoding UTF8"  
Aber warum nicht direkt?
powershell -File 'C:\script.ps1'

Gruß
Kraemer
Kraemer 23.05.2017 um 16:25:56 Uhr
Goto Top
Wenn Microsoft doch nur eine Lösung geschaffen hätte, Powershell-Code in einer Datei zu speichern...
clSchak
clSchak 24.05.2017 um 08:29:50 Uhr
Goto Top
@Kraemer

das wäre Hexerei und würde nur, erneut, beweisen das MS mit dem Teufel im Bunde ist!

face-smile

@133202
Powershell ist eigenständig, dass kann man genau so verwenden wie batch, die Dateiendung ist PS1 ...