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)


Bewertung
0 lesenswert
nicht lesenswert
Ich versuche, per PowerShell die Laufzeiten von Videos abzufragen.
$path = "C:\Users\rudi\videos\xx",
$filter = "*.mp4"

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:
    Verzeichnis: C:\Users\rudi\videos\xx


Mode                LastWriteTime         Length Name                                                                                                                    
----                -------------         ------ ----                                                                                                                    
-a----       16.07.2020     10:43       84321718 160618-su294-2228begerenswaardig.mp4                                                                                    
-a----       16.07.2020     10:43         205799 anim_screenslide.mp4                                                                                                    
-a----       16.07.2020     10:43      160008019 cat-vs-u-20180326-short_ccth.mp4                                                                                        
-a----       16.07.2020     10:43        6723899 waldkauz-augen.1492555539.mp4                                                                                           
Get-ChildItem : Der Pfad "C:\Users\rudi\*.mp4" kann nicht gefunden werden, da er nicht vorhanden ist.
In C:\Users\rudi\Desktop\clip-duration.ps1:10 Zeichen:5
+     Get-ChildItem -LiteralPath $targetDirectory -Include $filter -Fil ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (C:\Users\rudi\*.mp4:String) [Get-ChildItem], ItemNotFoundException
    + 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)


Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht lesenswert
Was ich nicht verstehe:
param (
    [string]$path = "C:\Users\rudi\videos\xx",
    [string]$filter = "*.mp4"
)

Function Get-VideoDetails([string]$targetDirectory, [string]$filter) {
    echo $targetDirectory
    echo $filter
}

echo $path
echo $filter
Get-VideoDetails($path, $filter)

Warum ist die Ausgabe
C:\Users\rudi\videos\xx
*.mp4
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)


Bewertung
0 lesenswert
nicht 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:
Get-VideoDetails $path $filter

von Uhu U. (uhu)


Bewertung
0 lesenswert
nicht 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]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [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.

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