使用 Where-Object cmdlet 过滤数据集
Filter datasets using Where-Object cmdlet
我希望使用 Where-Object
cmdlet 过滤数据集。例如,请考虑以下 cmdlet 中的 Notifications
列。它包含两个值,我想按 Where-Object | {$_.Notifications -eq 'Operator1'}
过滤它。我还尝试使用 -in, -notin, -contains, -notcontains, -match, -notmatch, -like, -notlike
等进行过滤。但是到目前为止,其中 none 已经产生了任何结果。任何指针都非常感谢。
PS>Get-DbaAgentAlert -SqlInstance 'Redacted'
ComputerName : Redacted
SqlInstance : Redacted
************ : ************
************ : ************
Notifications : {Operator1, Operator2}
************ : ************
************ : ************
正在做 Get-Member
returns
PS>Get-DbaAgentAlert -SqlInstance 'Redacted' | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
OtherColumns ********** ***********
Notifications NoteProperty DataTable Notifications=
此外,Notifications
列的实际数据集看起来像
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
谢谢!
编辑: 我在这里使用的 cmdlet 的来源来自 dbatools/Get-DbaAgentAlert
试试这个:
Get-DbaAgentAlert -SqlInstance ".\sql2016" |
Where-Object {$_.Notifications.OperatorName -eq "test1"}
我是这样计算的:
$results = Get-DbaAgentAlert -SqlInstance ".\sql2016"
$res.Notifications
这 returns 类似于:
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
属性 基本上是另一个对象,因此我们必须定位 that 对象
的正确元素
我希望使用 Where-Object
cmdlet 过滤数据集。例如,请考虑以下 cmdlet 中的 Notifications
列。它包含两个值,我想按 Where-Object | {$_.Notifications -eq 'Operator1'}
过滤它。我还尝试使用 -in, -notin, -contains, -notcontains, -match, -notmatch, -like, -notlike
等进行过滤。但是到目前为止,其中 none 已经产生了任何结果。任何指针都非常感谢。
PS>Get-DbaAgentAlert -SqlInstance 'Redacted'
ComputerName : Redacted
SqlInstance : Redacted
************ : ************
************ : ************
Notifications : {Operator1, Operator2}
************ : ************
************ : ************
正在做 Get-Member
returns
PS>Get-DbaAgentAlert -SqlInstance 'Redacted' | Get-Member
TypeName: System.Management.Automation.PSCustomObject
Name MemberType Definition
---- ---------- ----------
OtherColumns ********** ***********
Notifications NoteProperty DataTable Notifications=
此外,Notifications
列的实际数据集看起来像
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
谢谢!
编辑: 我在这里使用的 cmdlet 的来源来自 dbatools/Get-DbaAgentAlert
试试这个:
Get-DbaAgentAlert -SqlInstance ".\sql2016" |
Where-Object {$_.Notifications.OperatorName -eq "test1"}
我是这样计算的:
$results = Get-DbaAgentAlert -SqlInstance ".\sql2016"
$res.Notifications
这 returns 类似于:
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
属性 基本上是另一个对象,因此我们必须定位 that 对象