Конвейер PowerShell: выполнение действий с помощью ForEach-Object
Содержание:
1. Стандартный вход и выход;
2. Фильтрация с помощью Where-Object;
3.
Помимо фильтрации с помощью Where-Object, для каждого объекта, проходящего по конвейеру, можно выполнить определенное действие с помощью ForEach-Object. Подобно Where-Object, команда ForEach-Object использует блок сценария и переменную $_, представляющую текущий объект на конвейере.
Для примера предположим, что нам требуется вывести полный путь и имя каждого файла *.txt. Команда, позволяющая решить эту задачу, выглядит так:
Get-ChildItem *.txt | ForEach-Object {
$_.FullName
}Выход этой команды — полный путь и имя каждого файла *.txt. Конечно, внутри блока сценария можно выполнить много других действий. Например, записать имена, а затем удалить файлы *.log из каталога C:Logs позволяет такая команда:
Get-ChildItem C:Logs*.log | ForEach-Object {
"Removing $($_.FullName)"
Remove-Item $_
} | Out-File C:LogsCleanup.txt -AppendЭта команда выводит текстовую строку «Удаление (полный путь и имя файла журнала)», а затем удаляет файл (Remove-Item). Все выведенные строки записываются в файл C:LogsCleanup.txt. Фильтрацию (Where-Object) можно комбинировать с действиями (ForEach-Object) для построения еще более гибких команд. Например, удалить файлы *.log старше шести месяцев и записывать имя каждого из них перед удалением позволяет следующая команда:
Get-ChildItem C:Logs*.log | Where-Object {
$_.LastWriteTime -lt (Get-Date).AddMonths(-6)
} | ForEach-Object {
"Removing $($_.FullName)"
Remove-Item $_
} | Out-File C:LogsCleanup.txt -AppendДаже если вы не являетесь экспертом по PowerShell, примерное понимание изложенных выше основ объектов и конвейера позволит вам разобраться, как работают эти команды PowerShell.
Мощь конвейера
Конвейер — это краеугольный камень, открывающий возможность реализации всего богатства функций PowerShell. Поэкспериментировав с описанными выше примерами, вы обнаружите, что PowerShell упрощает сложные задачи намного эффективнее, чем это возможно в Cmd.exe. Получить дополнительную информацию и ознакомиться с другими примерами можно в разделе справки PowerShell, посвященном конвейерам (https://technet.microsoft.com/en-us/library/hh847902.aspx).
Приступите к изучению ForEach-Object сразу же после того, как закончите ремонт в ванной комнате своей квартиры? В таком случае вам определенно точно следует посетить страничку http://www.xn--d1ajkfcigi.com.ua/page-Luki_nevidimki_Odessa.html (http://www.xn--d1ajkfcigi.com.ua/page-Luki_nevidimki_Odessa.html). Здесь вы сможете приобрести люк невидимку, при помощи которого вы сможете легко скрыть бросающиеся в глаза коммуникации, портящие внешний вид данного помещения.