Microsoft MVPs inside





 MCSEboard.de – IT Pro Forum zu Windows Server 2008 R2 / 2008 / 2003 & Windows 7 / Vista / XP
Registrieren Hilfe Regeln Benutzerliste Suchen Heutige Beiträge Alle Foren als gelesen markieren

Windows Forum — Scripting


Alles zum Thema System Administration Scripting — Q & A zum Thema Scripting: Batch, VBS, WMI, PowerShell


Antwort
     
Themen-Optionen
Alt 15.11.2011, 13:08   #1
Board Veteran
 
Offline
Registriert seit: 12-2008
Beiträge: 4.674
Cool [PS] Break bei foreach-object

Hallo zusammen,
jetzt habe ich selbst auch mal ne Powershell frage.

Angenommen ich habe ein kleines Script:

Code:
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
Code:
$count = 0
get-childitem c:\ -recurse | foreach-object {
   $_.Fullname
   if($count -ge 10){ break }
   $count++
}
    Mit Zitat antworten
Alt 15.11.2011, 13:21   #2
olc
Expert Member
 
Benutzerbild von olc
 
Offline
Registriert seit: 07-2006
Beiträge: 3.692
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:
Code:
Get-ChildItem | Select-object -first 10

Viele Grüße
olc

Signatur
"Mit dem Wissen wächst der Zweifel." (Johann Wolfgang von Goethe)

    Mit Zitat antworten
Alt 15.11.2011, 13:25   #3
Board Veteran
 
Offline
Registriert seit: 12-2008
Beiträge: 4.674
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.
    Mit Zitat antworten
Alt 15.11.2011, 14:13   #4
Moderator
 
Offline
Registriert seit: 11-2002
Beiträge: 6.666
Hi,

Zitat von Dukel Beitrag anzeigen

Folgendes funktioniert nicht, da ein Break nicht bei Foreach-Object greift
Code:
$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

Signatur
www.powershellpraxis.de

Nec Cupias, Nec Metuas

    Mit Zitat antworten
Alt 15.11.2011, 14:25   #5
Board Veteran
 
Offline
Registriert seit: 12-2008
Beiträge: 4.674
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).
    Mit Zitat antworten
Alt 15.11.2011, 16:01   #6
Moderator
 
Offline
Registriert seit: 11-2002
Beiträge: 6.666
mit ner WhileSchleife

Code:
remove-variable count
$a=get-childitem c:\
while ($count -lt 5)
{
  $a[$count++].fullname
  if ($count -gt 5){break}
}
Write-Host "test"

Signatur
www.powershellpraxis.de

Nec Cupias, Nec Metuas

    Mit Zitat antworten
Alt 15.11.2011, 16:04   #7
Board Veteran
 
Offline
Registriert seit: 12-2008
Beiträge: 4.674
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.
    Mit Zitat antworten
Alt 16.11.2011, 09:25   #8
Moderator
 
Offline
Registriert seit: 11-2002
Beiträge: 6.666
Dann bau dir doch selbst eine kleine Funktion, die das Verzeichnis eine bestimmte Anzahl von Schritten rekursiv durchläuft.

Signatur
www.powershellpraxis.de

Nec Cupias, Nec Metuas

    Mit Zitat antworten
Alt 16.11.2011, 09:35   #9
Board Veteran
 
Offline
Registriert seit: 12-2008
Beiträge: 4.674
Das wäre auch noch ne Idee. Danke.
    Mit Zitat antworten
Antwort


Themen-Optionen


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Powershell - ForEach-Object -> sequentiell gearloose Windows Forum — Scripting 11 04.08.2011 15:42
Powershell - foreach-object mit Warten auf Prozessende gearloose Windows Forum — Scripting 4 09.02.2011 16:48
Powershell - Ausgabe ohne line break ponchofiesta Windows Forum — Scripting 1 01.10.2010 14:01
SSIS ForEach Schleifencontainer Dr.Verpeilung MS SQL Server Forum 0 13.05.2009 11:39
Break Senden Konsolenrouter adowoMAC Cisco Forum — Allgemein 4 25.01.2008 14:37


Alle Zeitangaben in MEZ/CET. Es ist jetzt 15:19 Uhr. Seite generiert in 0,040 Sekunden.

- Unsere Partner -

Copyright © 2000 – 2012 MCSEboard.de

Sprung zum Seitenanfang