Dukel 454 Geschrieben 15. November 2011 Melden Teilen Geschrieben 15. November 2011 Hallo zusammen, jetzt habe ich selbst auch mal ne Powershell frage. Angenommen ich habe ein kleines Script: get-childitem c:\ -recurse | foreach-object { $_.Fullname } Wie komme ich an die z.B. ersten 10 Dateien ohne alle einzulesen? Folgendes funktioniert nicht, da ein Break nicht bei Foreach-Object greift $count = 0 get-childitem c:\ -recurse | foreach-object { $_.Fullname if($count -ge 10){ break } $count++ } Zitieren Link zu diesem Kommentar
olc 18 Geschrieben 15. November 2011 Melden Teilen Geschrieben 15. November 2011 Hi Dukel, geht es Dir darum, den Einlesevorgang zu beschleunigen oder nur darum, nach dem Auslesen der Dateien und Verzeichnisse die ersten 10 Zeilen auszugeben? In letzterem Fall ginge es so: Get-ChildItem | Select-object -first 10 Viele Grüße olc Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 15. November 2011 Autor Melden Teilen Geschrieben 15. November 2011 Den Einlesevorgang zu beschleunigen. Es geht um ein Dateisystem mit mehreren Millionen Files. Das ausgeben geht auch mit z.B. foreach($file in (get-childitem ...)){ ... break ... } richtig aber eben langsam. Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 15. November 2011 Melden Teilen Geschrieben 15. November 2011 Hi, Folgendes funktioniert nicht, da ein Break nicht bei Foreach-Object greift $count = 0 get-childitem c:\ -recurse | foreach-object { $_.Fullname if($count -ge 10){ break } $count++ } Bei mir funktioniert der break. Welche PS-Version nutzt du? blub Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 15. November 2011 Autor Melden Teilen Geschrieben 15. November 2011 Powershell V2. Naja das break hatte so schon funktioniert, ist aber komplett aus dem Script gesprungen. Alles was nach der get-childitem schleife kam ging auch nicht (bzw. hatte noch ne Schleife drum rum, die nicht weiter ging). Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 15. November 2011 Melden Teilen Geschrieben 15. November 2011 mit ner WhileSchleife remove-variable count $a=get-childitem c:\ while ($count -lt 5) { $a[$count++].fullname if ($count -gt 5){break} } Write-Host "test" Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 15. November 2011 Autor Melden Teilen Geschrieben 15. November 2011 Same Problem. Bei "$a=get-childitem c:\" liest es die 5 Millionen Files in die Variable ein und gibt dann aus. C:\ war nur ein Beispiel von mir. Es geht um einen größeren Share. Aber ich befürchte, dass das so wie ich das will gar nicht geht. Zitieren Link zu diesem Kommentar
blub 115 Geschrieben 16. November 2011 Melden Teilen Geschrieben 16. November 2011 Dann bau dir doch selbst eine kleine Funktion, die das Verzeichnis eine bestimmte Anzahl von Schritten rekursiv durchläuft. Zitieren Link zu diesem Kommentar
Dukel 454 Geschrieben 16. November 2011 Autor Melden Teilen Geschrieben 16. November 2011 Das wäre auch noch ne Idee. 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.