Mr_Marple 15 Geschrieben 19. November 2012 Melden Teilen Geschrieben 19. November 2012 Hallo! Ich bastle momentan an meinem ersten Powershell Skript und bin begeistert und entsetzt zugleich! :D Durch viel herumprobieren komme ich langsam aber doch voran, aber zur Zeit hänge ich komplett. :( Ich schreibe an einem Skript welches Ordnerinhalte auswertet und in eine Datei schreiben soll. Ich kämpfe mit der Ausgabe von Variablen, genauer gesagt damit wie sie ausgegeben werden. Im Moment sieht das noch so aus: Write-Output "Ordner;Größe;Anzahl" | Out-File -Encoding Default C:\temp\test.txt $stammpfade = Get-ChildItem C:\temp | Where-Object {$_.psIsContainer -eq $true} $userpfade = $stammpfade | Get-ChildItem -Force | Where-Object {$_.psIsContainer -eq $true} $stammpfade | ForEach-Object -Process { $dateien = Get-ChildItem $_.fullname -Force -Recurse | Measure-Object length -sum $anzahl = $dateien | Select-Object -ExpandProperty Count $groesse = ($dateien | Select-Object -ExpandProperty Sum)/1048576 $groesserund = [system.Math]::Round($groesse,2) Write-Output "$_;$groesserund;$anzahl" | Out-File -Append -Encoding Default C:\temp\test.txt } Der Hund liegt derzeit in der letzten Zeile begraben. Die Variable $groesserund soll mit einem Komma statt einem Punkt exportiert werden. Gibt man die Variable alleine aus geht das ja auch, aber so wie oben wird leider immer ein Punkt daraus. Würde ich die Variablen alle alleine Ausgeben, dann beginnt jedes mal eine neue Zeile. Wichtig ist das Komma deshalb, da eine CSV daraus werden soll. Und Excel interpretiert Zahlenwerte mit Punkten als Datum und nicht als Zahl. Womöglich ist das ja nur eine Kleinigkeit, aber dadurch dass die Powershell derart komplex ist weiß ich nicht wo ich noch weiter suchen soll. Vielleicht auch dadurch dass es schon etwas später ist heute... ;) Das Skript ist noch nicht fertig, würde mich auch sehr über Optimierungen oder andere Lösungswege freuen, aber derzeit möchte ich nur mal wissen wie ich das hinbekomme dass der Output im Excel ohne Konvertierung gleich zu lesen ist. BitteDanke! :cry: Zitieren Link zu diesem Kommentar
HPrass 10 Geschrieben 19. November 2012 Melden Teilen Geschrieben 19. November 2012 Guten Morgen, versuche es mal mit: $culture = new-object system.globalization.cultureinfo("de-DE") $groesserund.tostring($culture) Die zweite Zeile dann vor der Ausgabe einbauen, das müsste das Dezimaltrennzeichen auf ein Komma ändern. Zitieren Link zu diesem Kommentar
Mr_Marple 15 Geschrieben 20. November 2012 Autor Melden Teilen Geschrieben 20. November 2012 *Räusper* Ich weiß das sagt normalerweise ein Mann nicht zu einem Anderen, aber trotzdem: "Du bist ein Schatz!!" :jau: Hab es auf diese Weise eingebaut, da mir deine 2. Zeile nur die Variable ausgegeben hat: $groesserund = $groesserund.tostring($culture) Ich hab ja leider noch viel zu wenig Ahnung was man mit der Powershell alles machen kann, was dieses "irgendwas.zeugs(blabla)" zum Beispiel darstellt, aber das wird noch werden. Bis jetzt hab ich nur mit der CMD gearbeitet, nix VBS oder so. Aber ich denke für "unlösbare" Fragen hab ich hier die richtige Stelle gefunden! Danke! 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.