Сортировка версий файлов по количеству ведущих цифр - PullRequest
0 голосов
/ 29 мая 2018

Я создал скрипт для создания отчета со списком всех файлов, которые не были обновлены.Я хотел бы заказать эти файлы по тем, которые начинаются с 2018. Сначала.Помимо этого у меня нет никаких предпочтений.

dir *.exe | %{ $_.VersionInfo } | Where-Object {$_.FileVersion -NotMatch "^2018.1"} | Sort-Object FileVersion -Descending > V:\file.path\binFileVersion.txt

Мой текущий выход:

4.0.30319.01
3.10.0.0
2018.0.0.0
2018.0.0.0
2018.0.0.0
2018.0.0.0
2.5.3.5
15, 0, 3, 0
1.0.0.0

Желаемый выход:

2018.0.0.0
2018.0.0.0
2018.0.0.0
2018.0.0.0
Everything else
Everything else

Я возился, но убежищедействительно не нашел решения.Я видел еще один пост о планшете слева, но на самом деле он не выполнял запланированные действия.

Спасибо!

Кто-то опубликовал ответ, который работает, но был удален, прежде чем я смог его утвердить.

$Match,$NotMatch = (dir *.exe | %{ $_.VersionInfo } | Where-Object {$_.FileVersion -NotMatch "^2018.1"} | Sort-Object FileVersion -Descending).Where({$_.FileVersion -like '2018*'},'Split') 
@($Match,$NotMatch)

Цените это!

Ответы [ 2 ]

0 голосов
/ 29 мая 2018

Вы можете использовать регулярные выражения, попробуйте это:

dir *.exe | %{ $_.VersionInfo } | Where-Object {$_.FileVersion -NotMatch "^2018.1"} | 
Sort-Object {[regex]::Match($_,'2018')} -Descending
0 голосов
/ 29 мая 2018

Вы можете использовать метод .Where() с перегрузкой разбиения, чтобы разделить его на две коллекции на предмет соответствия 2018*.Затем сначала верните соответствующую коллекцию.

$Match,$NotMatch = (dir *.exe | %{ $_.VersionInfo } | Where-Object {$_.FileVersion -NotMatch "^2018.1"} | Sort-Object FileVersion -Descending).Where({$_.FileVersion -like '2018*'},'Split')
@($Match,$NotMatch)

Примечание: требуется PowerShell 4 +

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...