Немного отличается от других. Я получаю массив файлов для обработки (в основном это обработка регистрации DLL на локальном компьютере), и мне нужен мой скрипт для правильной обработки нескольких DLL с одинаковым именем. select -Unique
не работает, поскольку технически файлы не являются дубликатами - каждый имеет свой уникальный полный путь.
Мне нужен этот скрипт для извлечения всех библиотек DLL в папке (а также подпапках), но только для возврата последнего экземпляра каждого именованного файла. Например, если у меня есть файлы:
- C: \ Path \ Update1 \ GRM.DLL
- C: \ Path \ Update1 \ HTCP.DLL
- C: \ Path \ Update2 \ GRM.DLL
- C: \ Path \ Update3 \ GRM.DLL
Сценарий должен возвращать объекты для Update3 \ GRM.DLL и Update1 \ HTCP.DLL.
[System.Collections.ArrayList]$dlls = @(Get-ChildItem -Path $PSScriptRoot -Recurse | Where-Object
{$_.Extension -eq ".dll" -and $_.FullName -notmatch 'dll_Old'})
Редактировать: Понял, но выбирает первый экземпляр, и мне нужен последний. В этом примере это означает, что он цепляет Update1 / GRM.DLL вместо Update3 / GRM.DLL
$dlls = @(Get-ChildItem -Path $PSScriptRoot -Recurse | Where-Object {$_.Extension -eq ".dll" -and $_.FullName -notmatch 'dll_Old'}) | Select-Object -Unique