“$_.extension -eq” ne fonctionne pas comme prévu?

J'ai essayé d'écrire un petit script pour automatiser la création de listes de lecture (m3u) pour des dizaines de dossiers/sous-dossiers de mp3/mp4 fichiers, tout en omettant divers divers autres fichiers qui y sont. Je sais très peu de choses sur Powershell, mais a réussi à reconstituer quelque chose qui fonctionne presque. La seule anomalie est que lorsque j'utilise "$_.extension -eq", il ne semble pas fonctionner, ou, au moins, je ne suis pas à l'utiliser. Si je l'utiliser pour correspondre log/txt dans un dossier temp par exemple, cela fonctionne, mais pas dans la présente instance. Voici le code -

$pathname = read-host "Enter path"
$root = Get-ChildItem $pathname | ? {$_.PSIsContainer}
$rootpath = $pathname.substring(0,2)
Set-Location $rootpath
Set-Location $pathname
foreach($folder in $root) {
Set-Location $folder
foreach($file in $folder) {
$txtfile =".m3u"
$files = gci | Where-Object {$_.extension -eq ".mp3" -or ".mp4"}
$count = $files.count
if($count -ge 2){
$txtfile = "_" + $folder.name + $txtfile
Add-Content $txtFile $files
}  
}
if(test-path $txtFile){
Add-Content $txtFile `r
}
Set-Location $pathname
}

J'ai essayé plusieurs variantes, comme la permutation de "match" pour "-eq" mais pas de chance. d'ailleurs, si j'ai omis le "ou ".mp4"" dans les parenthèses puis il fonctionne très bien, mais j'en ai besoin pour correspondre à tous les deux, et seulement deux mp3/mp4.

Merci d'avance.

InformationsquelleAutor gavin19 | 2010-11-04