Filter datasets using Where-Object cmdlet

I'm looking to filter datasets with a Where-Object Командлет. Например, рассмотрим Notifications column in the following cmdlet. It contains two values and I would like to filter it by Where-Object | {$_.Notifications -eq 'Operator1'}, I also tried to filter using -in, -notin, -contains, -notcontains, -match, -notmatch, -like, -notlike etc. But none of these have yielded any results so far. Любые указатели высоко ценятся.

PS>Get-DbaAgentAlert -SqlInstance 'Redacted'

ComputerName          : Redacted
SqlInstance           : Redacted
************          : ************
************          : ************
Notifications         : {Operator1, Operator2}
************          : ************
************          : ************

Делать Get-Member возвращается

PS>Get-DbaAgentAlert -SqlInstance 'Redacted' | Get-Member

   TypeName: System.Management.Automation.PSCustomObject

Name                  MemberType   Definition
----                  ----------   ----------
OtherColumns          **********  ***********
Notifications         NoteProperty DataTable Notifications=

Also, The actual dataset for Notifications column would look like

PS>$alerts.Notifications | Select -First 2 | Format-Table

OperatorId OperatorName     UseEmail UsePager UseNetSend HasEmail HasPager HasNetSend
---------- ------------     -------- -------- ---------- -------- -------- ----------
         1 Operator1          True    False      False     True    False      False
         2 Operator2          True    False      False     True    False      False

Спасибо!

Edit: Source of the cmdlet I'm using here is from https://dbatools.io/functions/get-dbaagentalert/

1 ответ

Решение

Попробуй это:

Get-DbaAgentAlert -SqlInstance ".\sql2016" |
Where-Object {$_.Notifications.OperatorName -eq "test1"}

Вот как я это сделал:

$results = Get-DbaAgentAlert -SqlInstance ".\sql2016"
$res.Notifications

Это возвращает что-то вроде:

OperatorId   : 1
OperatorName : test1
UseEmail     : True
UsePager     : False
UseNetSend   : False
HasEmail     : False
HasPager     : False
HasNetSend   : False

OperatorId   : 2
OperatorName : test2
UseEmail     : True
UsePager     : False
UseNetSend   : False
HasEmail     : False
HasPager     : False
HasNetSend   : False

... Notifications свойство - это в основном другой объект, поэтому мы должны нацелить правильный элемент этого объекта

Другие вопросы по тегам