Where-Object
Выбирать объекты из коллекции, которые получат истину в указанном выражении.
Параметры
-InputObject входной объект
-Property свойство объекта, по которому нужно выбрать
-Value значение
-FilterScript блок скрипта
Операторы сравнения:
-EQ
-Match
-CEQ
-NE
-GT
-CGT
-CLT
-CGE
-CLE
-Like
-CLike
-NotLike
-CNotLike
-CMatch
-NotMatch
-CNotMatch
-Contains
-CContains
-NotContains
-CNotContains
-In
-CIn
-NotIn
-CNotIn
-Is
-IsNot
-Not
Подробнее про операторы: Operators
Примеры
Выбрать числа кратные 3, т. е. делятся без остатка на 3.
Wake up, Neo, select all
Clear-Host
30, 10, 60, 50, 40, 20 | Where-Object {$_ % 3 -eq 0}Выбрать числа больше 25.
Wake up, Neo, select all
Clear-Host
30, 10, 60, 50, 40, 20 | Where-Object {$_ -gt 25}Выбрать строки, длина которых меньше 4.
Wake up, Neo, select all
Clear-Host
$arr = "one", "two", "three", "four", "five", "six", "seven"
$arr | Where-Object {$_.Length -lt 4}Выбрать строки, которые начинаются с буквы t.
Wake up, Neo, select all
Clear-Host
$arr = "one", "two", "three", "four", "five", "six", "seven"
$arr | Where-Object {$_ -match "^t"}Из массива координат выбрать те, расстояние до которых от указанной точки меньше 350.
Wake up, Neo, select all
Clear-Host
# создать массив
$coord = [Collections.ArrayList]::new()
# добавить элементы, координаты X и Y в данном случае
$coord.Add(@{X = 300; Y = 200})|Out-Null
$coord.Add(@{X = 10; Y = 20})|Out-Null
$coord.Add(@{X = 100; Y = 150})|Out-Null
$coord.Add(@{X = 700; Y = 310})|Out-Null
# создать объект Point, координаты 400, 400
$point = [System.Windows.Point]::new(400, 400)
Write-Host "Узнать расстояние до координат: $($point.X), $($point.Y)" -ForegroundColor Cyan
$coord|ForEach-Object {
Write-Host "Координаты: $($_.X), $($_.Y)" -ForegroundColor Green
Write-Host ("Расстояние: " + (Get-PointsDistance $_.X, $_.Y $point.X, $point.Y -Round)) -ForegroundColor Yellow
}
Write-Host "`nКоординаты, до которых расстояние меньше 350" -ForegroundColor Cyan
# выбрать координаты, которые соответствую условию: расстояние до укзанной точки меньше 350
$coord2 = $coord | Where-Object {(Get-PointsDistance $_.X, $_.Y $point.X, $point.Y -Round) -lt 350}
$coord2|ForEach-Object {
Write-Host "Координаты: $($_.X), $($_.Y)" -ForegroundColor Green
}Получить список процессов, имя которых начинается с букв a,b,c,d .. k.
Wake up, Neo, select all
Get-Process | Where-Object ProcessName -Match "^[a-k].*"