Iska, про эту фишку я на прошлой неделе вычитал в книжке "PowerShell in Depth".
Where и foreach умеют быть методом, причём это работает быстрее, чем при передаче через пайп, как мы все привыкли. Сам не проверял быстродействие, но в книжке пользовались Measure-Command, разница в некоторых случаях в разы.
Правильнее, конечно, писать .where({}), но в данном случае можно и без круглых скобок.
CMD/BAT - Необходимо сделать два батника,подскажите ошибки
-
Iska
Re: CMD/BAT - Необходимо сделать два батника,подскажите ошибки
alpap, это-то я знаю. Но точка… Как это понимать? Откуда такой синтаксис вместо:
Код:
Где об этом можно почитать?
DJ Mogarych, спасибо, ясно. Там были какие-то разъяснения, откуда сие взялось, и в каких случаях это «умеют» работает?
Ага. Нашёл:
Скрытый текст
[spoiler]Цитата:[/spoiler]
7.5.3 The Where method
PowerShell v4 introduced another way to filter a collection of objects. This method
isn’t well documented, nor is it easily discoverable, yet it’s relatively easy to use and
performs well. Basically, you can use Where as a method:
Код:
…
и т.д.
Код:
Код: Выделить всё
Get-ChildItem -Path "C:\temp" | Where-Object -FilterScript {$_.Length -gt 2MB}Где об этом можно почитать?
DJ Mogarych, спасибо, ясно. Там были какие-то разъяснения, откуда сие взялось, и в каких случаях это «умеют» работает?
Ага. Нашёл:
Скрытый текст
[spoiler]Цитата:[/spoiler]
7.5.3 The Where method
PowerShell v4 introduced another way to filter a collection of objects. This method
isn’t well documented, nor is it easily discoverable, yet it’s relatively easy to use and
performs well. Basically, you can use Where as a method:
Код:
Код: Выделить всё
(Get-Service m*).Where{$_.status -eq "stopped"}…
и т.д.
-
DJ Mogarych
Re: CMD/BAT - Необходимо сделать два батника,подскажите ошибки
Цитата из книжки:
Цитата:
В Powershell v4 появился новый способ фильтровать набор объектов. Этот способ как следует не задокументирован и его нелегко обнаружить, тем не менее, он относительно прост в использовании и хорошо работает.
Один из примеров:
Код:
Цитата:
В Powershell v4 появился новый способ фильтровать набор объектов. Этот способ как следует не задокументирован и его нелегко обнаружить, тем не менее, он относительно прост в использовании и хорошо работает.
Один из примеров:
Код:
Код: Выделить всё
(Get-Process | sort Handles).Where({$_.Handles -gt 1000}, "SkipUntil", 1)-
Iska
Re: CMD/BAT - Необходимо сделать два батника,подскажите ошибки
А вот и разница проклюнулась:
Скрытый текст
[spoiler]Код: [/spoiler]
Цитата:
Код:
DJ Mogarych, да, спасибо, уже читаю. Плюс одна из первых ссылок выдачи (в открытом доступе):
Скрытый текст
[spoiler]Код: [/spoiler]
Код: Выделить всё
Get-ChildItem -Path "C:\Мои проекты\0282" | Where-Object -FilterScript {$_.Length -gt 2MB}
(Get-ChildItem -Path "C:\Мои проекты\0282" | Where-Object -FilterScript {$_.Length -gt 2MB}).GetType().FullName
''
(Get-ChildItem -Path "C:\Мои проекты\0282").where({$_.Length -gt 2MB})
((Get-ChildItem -Path "C:\Мои проекты\0282").where({$_.Length -gt 2MB})).GetType().FullNameЦитата:
Код:
Код: Выделить всё
Directory: C:\Мои проекты\0282
Mode LastWriteTime Length Name
---- ------------- ------ ----
-a---- 13.03.2019 12:44 9722769 Sample 02.docx
-a---- 13.03.2019 12:44 9722769 Sample.docx
System.Object[]
-a---- 13.03.2019 12:44 9722769 Sample 02.docx
-a---- 13.03.2019 12:44 9722769 Sample.docx
System.Collections.ObjectModel.Collection`1[[System.Management.Automation.PSObject, System.Management.Automation, Version=3.0.0.0, Culture=neutral, PublicKey
Token=31bf3856ad364e35]]
DJ Mogarych, да, спасибо, уже читаю. Плюс одна из первых ссылок выдачи (в открытом доступе):
PowerShell V4: Where() and ForEach() Methods | Manning
.