Ausgabe einer Funktion in Variable schreiben
Hallo Zusammen,
Ich hänge irgendwie fest. Wäre für jede Hilfe dankbar!
Folgendes ich möchte das Ergebniss meines Get-ChildItem Befehl mehrfach weiterverarbeiten.
"Get-ChildItem -path $path -file -Recurse -Force -ErrorAction Stop"
Das Problem ist das der Befehl knapp 2Std läuft. Wenn ich das nun so folgend in eine Variable speichere,
->" $files = Get-ChildItem -path $path-file -Recurse -Force -ErrorAction Stop"
führt die Shell anscheinend die Befehl nochmal aus und es dauert wieder seine Zeit und das obwohl dann nur eine Berechung durchgeführt werden soll
"$files | Select-Object -Property length | Measure-Object length -Sum"
Wie bekomme ich es nun hin das, dass Ergebniss in die Variable schreibt und nicht die Funktion? Sodass ich damit Berechnungen durchführen kann ohne das es wieder dauert
VG und Vielen Dank!
Oneil88
Ich hänge irgendwie fest. Wäre für jede Hilfe dankbar!
Folgendes ich möchte das Ergebniss meines Get-ChildItem Befehl mehrfach weiterverarbeiten.
"Get-ChildItem -path $path -file -Recurse -Force -ErrorAction Stop"
Das Problem ist das der Befehl knapp 2Std läuft. Wenn ich das nun so folgend in eine Variable speichere,
->" $files = Get-ChildItem -path $path-file -Recurse -Force -ErrorAction Stop"
führt die Shell anscheinend die Befehl nochmal aus und es dauert wieder seine Zeit und das obwohl dann nur eine Berechung durchgeführt werden soll
"$files | Select-Object -Property length | Measure-Object length -Sum"
Wie bekomme ich es nun hin das, dass Ergebniss in die Variable schreibt und nicht die Funktion? Sodass ich damit Berechnungen durchführen kann ohne das es wieder dauert
VG und Vielen Dank!
Oneil88
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 630605
Url: https://administrator.de/forum/ausgabe-einer-funktion-in-variable-schreiben-630605.html
Ausgedruckt am: 04.05.2025 um 13:05 Uhr
1 Kommentar

Zitat von @ONeil88:
Das Problem ist das der Befehl knapp 2Std läuft. Wenn ich das nun so folgend in eine Variable speichere,
->" $files = Get-ChildItem -path $path-file -Recurse -Force -ErrorAction Stop"
Das ist vollkommen normal je nachdem wie viele Dateien eben aufzulisten sind.Das Problem ist das der Befehl knapp 2Std läuft. Wenn ich das nun so folgend in eine Variable speichere,
->" $files = Get-ChildItem -path $path-file -Recurse -Force -ErrorAction Stop"
führt die Shell anscheinend die Befehl nochmal aus
Nein das tut sie definitv nicht!! In der Variablen befindet sich nach dem Ausführen für jede Datei ein FIleInfo Object. Also ein Array aus FileInfo Objekten. Die Powershell muss aber dieses riesige Array jedes mal wenn du es in einen Pipeline schickst durchlaufen und die entsprechenden Properties summieren, das kostet eben Zeit.Du kannst das etwas beschleunigen in dem du im Get-ChildItem Befehl nur die Properties via Select selektierst die du hinterher auch nutzten willst, das reduziert die Objektgröße. Und anstatt Pipelines zu nutzen foreach(){} Konstrukte nutzt, die sind wesentlich schneller als Pipelines bei Daten die schon in einer Variablen liegen.
Zusätzlich sollte man Aufgaben die viele Daten betreffen in paralellisierten Threads ausführen z.B. über foreach -parallel runspaces & co., das gibt dann erst den richtigen Kick.