Мне нужно извлечь файлversion некоторых DLL-файлов, о которых я не знаю имя. Все, что я знаю, это то, где находится файл, содержащий файл, и его имя совпадает с папкой, скрытой ниже.Powershell найти папки и файлы с тем же именем
На самом деле это что-то вроде этого:
C: \ Inetpub \ Wwwroot \ APPFolder \ Bin \ файлы (где имя вложенного совпадает с именем файла в папке Bin)
После многих попыток (и много неудач), я пошел немного назад и вперед, и я теперь, опираясь удобно на этом кусочке кода .... близко, но не сигару:
Get-ChildItem -Path c:\temp\Documents -recurse -Filter *.dll | where-object{ (Get-ChildItem -Path c:\temp\Documents -recurse -Filter *.dll) -match $_.Directory.Name }
Этот код автоматически восстанавливает файлы для всех файлов в \ temp \ documents, а затем m атакует файлы в папках, что приятно ... но не совсем то, что я хотел. Кроме того, приведенный выше код дает папки, в которых находятся файлы, которые соответствуют папкам, в которых они находятся, и не только сопоставленный файл.
Итак ... Любые предложения? В упомянутой выше папке bin есть несколько файлов DLL, что является частью того, почему мне нужно выбрать тот, который имеет то же имя, что и APPFolder.
Alright :) По крайней мере, он дал только один файл, который я хотел ... Если файл находился под той же папкой, что и подразумевалось имя. – SkyRaider
Единственная проблема с тем, что файлы, которые мне нужно сопоставить, находятся в другой папке. Как вы сказали, «это будет отфильтровывать его до библиотек DLL, у которых есть имя файла, такое же, как имя каталога, в котором он находится», в то время как мне нужно что-то вроде «Это будет отфильтровывать его до DLL с именем файла то же, что и имя каталога, в котором он находится, и это подкаталоги ». Файлы dll расположены на один шаг ниже папки с тем же именем. – SkyRaider
По-видимому, он перечисляет подкаталоги только с $ _. Directory.Name или просто GetFileNameWithout ..... но при попытке сопоставить друг с другом он соответствует только папке, в которой он находится (одна папка в основной папке) – SkyRaider