Мне нравится искать некоторые старые файлы с предопределенными расширениями.(например, .doc, .xls, .txt и т. д.) в определенной папке.Я помещаю расширения в переменную:
$wildcards = @(".txt",".doc",".xls")
Когда я помещаю новое значение в эту переменную, оно должно изменить другую переменную.($ collection)
Вот мой код:
$folder = Get-ChildItem C:\test\test1\
$date = (Get-Date).Add(-1)
$wildcards = @(".txt",".doc",".xls")
function Get-WildCards {
$counter = 0;
$counterEnd = $wildcards.Count
$collection = New-Object System.Collections.ArrayList
$filter = "$" + "_.Extension" + " -like $" + "wildcards[" + $counter + "]}"
$or = " -or "
for ($counter = 0; $counter -lt $counterEnd; $counter++) {
$filter = "$" + "_.Extension" + " -like $" + "wildcards[" + $counter + "]}"
$collection += $filter + $or
}
$collection = [String]::Join('', $collection)
$collection = $collection.ToString()
$collection = $collection.TrimEnd($or)
}
Get-WildCards
$folderPath = $folder.FullName
$files = Get-ChildItem -Path $folderPath -File:$true |
Where-Object {$collection}
$files
Если я выполню этот код, условие Where-Object не будет работать таким образом.Это не будет фильтровать расширения.Как мне добиться, чтобы это работало?Любая помощь приветствуется.