133202
Goto Top

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

Content-Key: 338668

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

Printed on: April 25, 2024 at 00:04 o'clock

Mitglied: 132895
Solution 132895 May 23, 2017 updated at 14:31:07 (UTC)
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ß
Member: Kraemer
Kraemer May 23, 2017 at 14:25:56 (UTC)
Goto Top
Wenn Microsoft doch nur eine Lösung geschaffen hätte, Powershell-Code in einer Datei zu speichern...
Member: clSchak
clSchak May 24, 2017 at 06:29:50 (UTC)
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 ...