sam600 10 Geschrieben 17. Juni 2013 Melden Teilen Geschrieben 17. Juni 2013 Hallo Leider verzweifle ich am vergleichen an bestimmter Zahlen. Ich lese anhand ein Liste verschiedene Nummern ab. Diese vergleiche ich mit Zalen die ich aus einer CSV Importiert habe. Das Script: Import-Csv c:\liste.txt | foreach { $NAME = ($_.NAME) $DISK = ($_.DISK) $LIMIT = ($_.LIMIT) Vergleichen mit der Zahl die ich per Win32_LogicalDisk ermittle. if( "$TEMP" -lt "$LIMIT" ){write-host "Zahl zu klein"} Das komische ist das immer wieder der Vergleich ( lt ) nicht geht. z.b.:Die Zahl 5120 ist kleiner als 15015 - OKDie Zahl 1024 ist kleiner als 9760 - wird von lt aber als grösser erkannt?usw.. hat mir jemand einen Tip? Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 17. Juni 2013 Melden Teilen Geschrieben 17. Juni 2013 Bei Variablen brauchst du keine Anführungszeichen. Gib einfach mal die Variablen direkt aus. Zitieren Link zu diesem Kommentar
sam600 10 Geschrieben 17. Juni 2013 Autor Melden Teilen Geschrieben 17. Juni 2013 Dann erhalte ich folgende Fehlermeldung: Fehlerhaftes Argument für den Operator "-lt": "15014" konnte nicht mit "5120" verglichen werden. Fehler: "Der Wert "51 0" vom Typ "System.Double" kann nicht in den Typ "Microsoft.PowerShell.Commands.MatchInfo" konvertiert werden.". Bei C:\festplatte.ps1:27 Zeichen:17 + if( $TEMP -lt <<<< $c ){ + CategoryInfo : InvalidOperation: (:) [], RuntimeException + FullyQualifiedErrorId : BadOperatorArgument Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 17. Juni 2013 Melden Teilen Geschrieben 17. Juni 2013 Gib einmal nur die Inhalt und Typen der beiden Variablen aus, die du vergleichen möchtest. $foo = 123$foo.GetType() Zitieren Link zu diesem Kommentar
sam600 10 Geschrieben 17. Juni 2013 Autor Melden Teilen Geschrieben 17. Juni 2013 Gib einmal nur die Inhalt und Typen der beiden Variablen aus, die du vergleichen möchtest. IsPublic IsSerial Name BaseType -------- -------- ---- -------- True False MatchInfo System.Object True True Double System.ValueType Das ist das Problem - oder? Wie bringe ich die beiden Varibalen auf den gleichen Typ? Wie gesagt: Die 2 Variablen / Zahlen sollen verglichen werden Danke Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 17. Juni 2013 Melden Teilen Geschrieben 17. Juni 2013 http://technet.microsoft.com/de-de/magazine/2007.03.powershell.aspx http://www.powershellpraxis.de/index.php/grundlagen/die-variablen [int]$foo = 5 Zitieren Link zu diesem Kommentar
sam600 10 Geschrieben 18. Juni 2013 Autor Melden Teilen Geschrieben 18. Juni 2013 http://technet.microsoft.com/de-de/magazine/2007.03.powershell.aspx http://www.powershellpraxis.de/index.php/grundlagen/die-variablen [int]$foo = 5 Danke habe die Lösung: Da ich den Typ MatchInfo nicht gleich in INT konvertieren kann habe ich einen zwischenschritt eingebaut Zuerst in String konvertieren und dann in INT [sTRING]$STRINGVAR = $MATCHINFO [int]$ZAHL = $STRINGVAR geht vieleicht auch "schoener" aber so funktioniert es! freue mich trotzdem um eine Antwort, wenn es besser geht.... nochmal Danke Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 18. Juni 2013 Melden Teilen Geschrieben 18. Juni 2013 Wo kommt das Matchinfo denn her? Du kannst so früh wie möglich die Variable definieren und dadurch nicht mehrmals umwandeln. Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.