itchley
Goto Top

Powershell übernimmt String falsch in Variable

Moin zusammen,

ich finde keine Lösung für mein Problem...
In einer foreach-Schleife möchte ich u.a. Zeiten berechnen und hole mir mit Substring alles was ich brauche in einzelne Variablen- alles klappt bis auf eine Kleinigkeit.
Prüfe ich mit $Zeile.Substring(138) das Resultat, erhalte ich das was ich erwarte - hier zb 0,75
PS C:\Users\itchl> $Zeile.Substring(138)
0,75
Egal wie ich ran gehe, PS macht aus dem Element was anderes
PS C:\Users\itchl> $Pause = $Zeile.Substring(138)
PS C:\Users\itchl> $Pause
75
Ob ich es wie eigentlich geplant erstmal in eine Variable laufen lasse, es direkt in die Berechnung schicke oder was auch immer - ich blick nicht durch was PowerShell gegen die Kommazahl hat

Besten Dank schonmal für die Hilfe
Itchley

Content-Key: 94233410645

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

Printed on: April 27, 2024 at 15:04 o'clock

Member: kreuzberger
kreuzberger Mar 15, 2024 at 22:49:33 (UTC)
Goto Top
Tach @Itchley

was steht denn überhaupt in $Zeile drin?
Vermutlich liegt es an unterschiedlichen Variablentypen und deren Interpretation.

Kreuzberger
Mitglied: 12168552861
Solution 12168552861 Mar 16, 2024 updated at 06:15:33 (UTC)
Goto Top
Nun, in PS ist das Komma kein Dezimaltrenner sondern dient dazu ein Array einzuleiten.
0,75 wäre also ein Array aus den Elementen 0 und 75. Das Dezimaltrennzeichen ist hier der Punkt (.). Wenn man also damit Rechnen will sollte man das entsprechend berücksichtigen.

Das ein reiner String aber als Array in den Output geschrieben wird und dazu das erste Element noch ausgelassen wird wäre ungewöhnlich, daher fehlt uns hier der Kontext woraus der Substring gezogen wird und welchem Typ die Variable $pause in der PS Session vorher schon einmal zugewiesen wurde.
Also die Variable zur Sicherheit vorher löschen (Remove-Variable) oder eine cleane Session verwenden.
Außerdem die Typen der Variablen mit .gettype() anzeigen lassen.

https://tio.run/##TYxBCsIwEEX3OUUYhLZQxE0RAi4Eb@DO0EVsRxsY25BpELx8LCaWLv ...

Gruß pp.
Member: Itchley
Solution Itchley Mar 16, 2024 at 08:39:13 (UTC)
Goto Top
Moin,

ich konnte mein Problem lösen. Ein guter Hinweis kam da noch von puderpader.
Da mein Skript etwas länger ist, nehme ich oftmals zum Testen nur einen entsprechenden Teil und füge den fix in eine PowerShellsitzung testhalber ein. Remove-Variable hatte ich zwar auch geschrieben, aber jedes mal beim Testen nicht mitgenommen...manchmal sieht man den Wald vor lauter Bäumen nicht.

Besten Dank


Schönes Wochenende
Itchley