samy0025
Goto Top

PowerShell Hilfe

Hallo Community,
ich möchte gerne das Ergebnis auf der Spalte B haben, leider finde ich die Lösung nicht.
$user= Import-Csv C:\Users\taedv12\Downloads\Aufgaben.csv
$Zahl= $user | Select-Object Zahl1, operand, Zahl2 

foreach($user in $user){

    do{
        [decimal]$zahl1 = 0
        $userinput = $user.Zahl1
    }until([decimal]::TryParse($userinput,[ref]$zahl1))
    
    
    do{
        $operator = $user.Operand
    }until($operator -match '^[-+*/]$')  



    do{
        [decimal]$zahl2 = 0
        $userinput = $user.Zahl2
    }until([decimal]::TryParse($userinput,[ref]$zahl2))

 
$result= "$zahl1,$operator, $zahl2"  
$summe = Invoke-Expression "$zahl1 $operator $zahl2"  
$ergebniss = $result,$summe


$ergebniss>> C:\Users\taedv12\Downloads\Ergebniss.csv

    }
    

Danke
screenshot 2022-09-23 102322

Content-Key: 4034047690

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

Printed on: May 5, 2024 at 01:05 o'clock

Member: em-pie
em-pie Sep 23, 2022 updated at 08:43:03 (UTC)
Goto Top
Moin,

da es ja offensichtlich Schulaufgaben sind und der Lerneffekt deutlich höher ist, wenn man sich selbst das Ergebnis erarbeitet:
beschäftige dich mal mit

Mit dem Custom Object schiebst erzeugst du zwei Properties: $calc und $result. $calc ist deine zusammengesetzte Berechnung, $result dein Ergebnis.
das gesamte Object schiebst du dann per Export-CSV in eine CSV und hast beides nebeneinander.

Edit:
alternativ:
$result= "$zahl1 $operator $zahl2"  
$summe = Invoke-Expression "$zahl1 $operator $zahl2"  
$ergebnis = "$result;$summe"  


$ergebnis>> C:\Users\taedv12\Downloads\Ergebniss.csv


Gruß
em-pie
Member: lorsumalpha
lorsumalpha Sep 23, 2022 at 08:43:35 (UTC)
Goto Top
Könntest du eventuell die .csv-Datei abbilden? So kann ich leider nicht das ganze reproduzieren
Member: erikro
Solution erikro Sep 23, 2022 at 08:47:55 (UTC)
Goto Top
Moin,

Zitat von @samy0025:
$user= Import-Csv C:\Users\taedv12\Downloads\Aufgaben.csv
$Zahl= $user | Select-Object Zahl1, operand, Zahl2 

Aha, eine Hausaufgabe. face-wink

foreach($user in $user){

Nein. Die Variablen müssen unterschiedliche Namen haben.

    do{
        [decimal]$zahl1 = 0
        $userinput = $user.Zahl1
    }until([decimal]::TryParse($userinput,[ref]$zahl1))
    
    
    do{
        $operator = $user.Operand
    }until($operator -match '^[-+*/]$')  



    do{
        [decimal]$zahl2 = 0
        $userinput = $user.Zahl2
    }until([decimal]::TryParse($userinput,[ref]$zahl2))

Das sind Endlosschleifen, falls nicht die valide Werte in den Feldern stehen. Falsche Fehlerbehandlung. Bitte nochmal machen.

$result= "$zahl1,$operator, $zahl2"  
$summe = Invoke-Expression "$zahl1 $operator $zahl2"  
$ergebniss = $result,$summe


$ergebniss>> C:\Users\taedv12\Downloads\Ergebniss.csv

    }
    

Um das zu erreichen, was Du willst, würde ich ein PS-Object konstruieren und dann mit export-csv arbeiten. Aber erst einmal alle Fehler bereinigen.

hth

Erik
Member: SlainteMhath
SlainteMhath Sep 23, 2022 at 08:52:22 (UTC)
Goto Top
Moin,

Könntest du eventuell die .csv-Datei abbilden? So kann ich leider nicht das ganze reproduzieren
Die csv hat den Inhalt jeder ungeraden Zeile aus dem Screenshot

@samy0025
Dir ist klar das jeder falsche Operater (oder jede nicht-Zahl) dein Script in eine Endlosschleife schickt?

lg,
Slainte
Member: samy0025
samy0025 Sep 23, 2022 at 09:26:45 (UTC)
Goto Top
Ja, danke ihnen für die Info. Aber die Werte sind da vorgegeben.
Member: samy0025
samy0025 Sep 23, 2022 at 09:28:23 (UTC)
Goto Top
Werde ich später machen, versuche es erstmal was mir @em-pie Versuchen.
Danke.
Member: samy0025
samy0025 Sep 23, 2022 at 09:28:40 (UTC)
Goto Top
Danke, werde mich direkt reinlesen.
Member: samy0025
samy0025 Sep 23, 2022 at 09:32:45 (UTC)
Goto Top
Das ist die CSV Datei
aufgabe
Member: erikro
Solution erikro Sep 23, 2022 updated at 10:13:20 (UTC)
Goto Top
Moin,

Zitat von @samy0025:

Das ist die CSV Datei

Nein, das ist der Screenshot einer Exceltabelle. face-wink Wenn Du das textuell gepostet hättest, hätte ich das testen können:

$data= Import-Csv C:\Users\taedv12\Downloads\Aufgaben.csv

foreach($dataset in $data) {

# Fehlerbehandlung überlasse ich Dir selbst

$result = New-Object PS-Object -property @{
    Zahl1 = $dataset.zahl1
    Operand = $dataset.operand
    Zahl2 = $dataset.zahl2
    Ergebniss = (invoke-expression "$($dataset.zahl1) $($dataset.operand) $($dataset.zahl2)")  
}

    $result | export-csv C:\Users\taedv12\ergebnis.csv -NoTypeInformation -Delimiter ";" -Encoding UTF8 -Append  
}

Das sollte aber funktionieren.

<edit> Klammer korrigiert</edit>

hth

Erik
Member: samy0025
samy0025 Sep 23, 2022 at 10:45:01 (UTC)
Goto Top
Ok, entschuldige Erik.

Danke für deine Hilfe

Grüß Samantha
Member: erikro
erikro Sep 23, 2022 at 10:47:42 (UTC)
Goto Top
Zitat von @samy0025:

Ok, entschuldige Erik.

Alles gut. Du lernst ja noch. face-wink

Danke für deine Hilfe

Gerne