Код работает немного по-разному между Powershell.exe и Powershell ISE - поведение Sort-Object - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть немного кода для получения гиперссылок с веб-страницы http - найдите все элементы, соответствующие критериям, затем найдите самые новые, отсортировав их, и используйте его InnerText в качестве источника для загрузки. Всем гиперссылкам присваивается 7-значный номер в конце их имени с большим номером для новых файлов.

Код:

$Web = ((Invoke-WebRequest "http://serveraddress/Export/").Links | 
         Where-Object {$_.href -like “xx_yyyyyy_auto_standard*”} | 
           Sort Name –Desc | Select –Last 1).innertext
Start-BitsTransfer -Source http://serveraddress/Export/$Web -Destination C:\autoreports\

Теперь, когда я запускаю выше в Powershell.exe (например, при запуске файла .ps1 с помощью щелчка правой кнопкой мыши и «Запуск с Powershell»), я получаю самый старый загруженный файл. Когда я запускаю выше в Powershell ISE, я получаю новейший файл. Когда я изменил -Last на -First в Powershell.exe, код работает как положено.

Я легко могу изменить это, но, поскольку я очень плохо знаком с Powershell - почему существует такая разница между Powershell ISE и "стандартом"? Заранее спасибо! Хотя это может быть новичком, я не нашел - или не понял - причины разницы.

Ответы [ 2 ]

0 голосов
/ 14 сентября 2018

В дополнение Полезный ответ Джордана , который решает вашу конкретную проблему:

Как указано, Sort-Object спокойно принимает несуществующие свойства для сортировки по .

К сожалению, в Windows PowerShell v5.1, попытка сортировки по несуществующему свойству приводит к, по-видимому, случайному порядку вывода :

WinPS> 1, 2, 3, 4 | Sort-Object -Property Foo
3
4
1
2

К счастью, эта проблема была исправлена ​​в PowerShell Core , где порядок ввода в этом случае сохраняется.

0 голосов
/ 13 сентября 2018

Объекты ссылок не имеют свойства «Имя», поэтому сортировка по имени не будет работать.

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