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

Примеры

  1. Выбрать числа кратные 3, т. е. делятся без остатка на 3.

    Wake up, Neo, select all

    Clear-Host
    30, 10, 60, 50, 40, 20 | Where-Object {$_ % 3 -eq 0}
  2. Выбрать числа больше 25.

    Wake up, Neo, select all

    Clear-Host
    30, 10, 60, 50, 40, 20 | Where-Object {$_ -gt 25}
  3. Выбрать строки, длина которых меньше 4.

    Wake up, Neo, select all

    Clear-Host
    $arr = "one", "two", "three", "four", "five", "six", "seven"
    $arr | Where-Object {$_.Length -lt 4}
  4. Выбрать строки, которые начинаются с буквы t.

    Wake up, Neo, select all

    Clear-Host
    $arr = "one", "two", "three", "four", "five", "six", "seven"
    $arr | Where-Object {$_ -match "^t"}
  5. Из массива координат выбрать те, расстояние до которых от указанной точки меньше 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
    }
  6. Получить список процессов, имя которых начинается с букв a,b,c,d .. k.

    Wake up, Neo, select all

    Get-Process | Where-Object ProcessName -Match "^[a-k].*"