Forum: PC-Programmierung PowerShell: Get-ChildItem stürzt ab


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Uhu U. (uhu)


Lesenswert?

Ich versuche, per PowerShell die Laufzeiten von Videos abzufragen.
1
$path = "C:\Users\rudi\videos\xx",
2
$filter = "*.mp4"
3
4
Get-ChildItem -LiteralPath $targetDirectory -Include $filter -File -Recurse

Das Verzeichnis C:\Users\rudi\videos\xx enthält 4 mp4-Dateien.

Wenn ich den Code in der PowerShell ISE ablaufen lasse, entsteht 
folgende Ausgabe:
1
    Verzeichnis: C:\Users\rudi\videos\xx
2
3
4
Mode                LastWriteTime         Length Name                                                                                                                    
5
----                -------------         ------ ----                                                                                                                    
6
-a----       16.07.2020     10:43       84321718 160618-su294-2228begerenswaardig.mp4                                                                                    
7
-a----       16.07.2020     10:43         205799 anim_screenslide.mp4                                                                                                    
8
-a----       16.07.2020     10:43      160008019 cat-vs-u-20180326-short_ccth.mp4                                                                                        
9
-a----       16.07.2020     10:43        6723899 waldkauz-augen.1492555539.mp4                                                                                           
10
Get-ChildItem : Der Pfad "C:\Users\rudi\*.mp4" kann nicht gefunden werden, da er nicht vorhanden ist.
11
In C:\Users\rudi\Desktop\clip-duration.ps1:10 Zeichen:5
12
+     Get-ChildItem -LiteralPath $targetDirectory -Include $filter -Fil ...
13
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14
    + CategoryInfo          : ObjectNotFound: (C:\Users\rudi\*.mp4:String) [Get-ChildItem], ItemNotFoundException
15
    + FullyQualifiedErrorId : PathNotFound,Microsoft.PowerShell.Commands.GetChildItemCommand

Offenbar versucht Get-ChildItem auch noch C:\Users\rudi zu iterieren und 
fällt dabei auf die Fresse.

Warum? Wie kann man diesen Unsinn abstellen?

von Helmut H. (helmuth)


Lesenswert?

Uhu U. schrieb:
> Warum?
Weil es der Benutzer so gewünscht hat:  The Recurse parameter gets items 
from the Path directory and its subdirectories.

Beitrag #6340565 wurde vom Autor gelöscht.
von Uhu U. (uhu)


Lesenswert?

Was ich nicht verstehe:
1
param (
2
    [string]$path = "C:\Users\rudi\videos\xx",
3
    [string]$filter = "*.mp4"
4
)
5
6
Function Get-VideoDetails([string]$targetDirectory, [string]$filter) {
7
    echo $targetDirectory
8
    echo $filter
9
}
10
11
echo $path
12
echo $filter
13
Get-VideoDetails($path, $filter)

Warum ist die Ausgabe
1
C:\Users\rudi\videos\xx
2
*.mp4
3
C:\Users\rudi\videos\xx *.mp4
?

In der Funktion hat $targetDirectory den Wert
   "C:\Users\rudi\videos\xx *.mp4"
während $filter leer ist.

von Frank (Gast)


Lesenswert?

Weil du ein Array mit den Werten in $path und $filter als Wert für den 
Parameter $targetDirectory übergibst.

Korrekt müsste der Funktionsaufruf folgendermaßen aussehen:
1
Get-VideoDetails $path $filter

von Uhu U. (uhu)


Lesenswert?

Danke für den Hinweis.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.