Where-Object, Select-Object и ForEach-object - различия и использование - PullRequest
0 голосов
/ 04 июня 2019

Where-Object, Select-Object и ForEach-Object

Я новичок в PowerShell.Я не очень понимаю.Может ли кто-нибудь привести примеры, иллюстрирующие различия и сценарии использования между ними?

1 Ответ

0 голосов
/ 04 июня 2019

У вас есть две вещи: фильтрация и итерация по коллекции.

  1. Фильтрация : принцип: всегда используйте фильтрацию слева, насколько это возможно.Эти две команды делают то же самое, но вторая не будет передавать огромный кусок данных через канал (или сеть):

Get-Process |where-Object {$ _. Name-like 'chrome'} ||Export-Csv 'c: \ temp \ projects.csv'

Get-Process -Name chrome |Export-Csv c: \ temp \ projects.csv

Это замечательно при работе с огромными списками компьютеров или большими файлами.

Многие командлеты имеют свои собственные функции фильтрации.Запустите команду get Get-Help get-process -full, чтобы увидеть, что они предлагают, прежде чем отправлять трубку.

итерация по коллекциям :

Здесь у вас есть 3 возможности:

  • командных команд - встроенная возможность командлетапередачи коллекции в другой командлет:

Get-Service -name BITS, Spooler, W32Time |Set-Service -startuptype Автоматически

  • Методы WMI - WMI использует свой собственный способ создания первого (другой синтаксис)

gwmi win32_networkadapterconfiguration -filter "описание типа '% intel%'" |EnableDHCP ()

  • перечисление объектов - итерация по списку:

Get-WmiObject Win32_Service -filter "name =«БИТЫ» »|ForEach-Object -process {$ _. Change ($ null, $ null, $ null, $ null, $ null, $ null, $ null, "P @ ssw0rd")}

Кредиты : Я нашел объяснения, которые прояснили беспорядок в моей голове вокруг всех этих вещей в книге под названием: Изучите Powershell за месяц обедов (главы 9 и 13 в данном случае)

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