Powershell中不存在特定对象属性时如何删除条目?
How to delete entries when a specific object property does not exists in Powershell?
例如,在下面的PSCustomObject中,我希望删除不存在TagName的对象
$dataset1 = @(
@{
MachineName = "AAA"
ID = "111"
TagName = "GroupA"
},
@{
MachineName = "BBB"
ID = "222"
TagName = "GroupB"
},
@{
MachineName = "CCC"
ID = "111"
TagName = ""
},
@{
MachineName = "DDD"
ID = "333"
TagName = ""
},
@{
MachineName = "EEE"
ID = "111"
TagName = ""
}
}
因此,删除 $dataset1 后应包含以下内容:
$dataset1 = @(
@{
MachineName = "AAA"
ID = "111"
TagName = "GroupA"
},
@{
MachineName = "BBB"
ID = "222"
TagName = "GroupB"
}
}
您可以使用Where-Object
(或别名where
)。 Where-Object
returns 脚本块语句为真的所有对象
$dataset1 = $dataset1 | Where-Object { $_.TagName }
例如,在下面的PSCustomObject中,我希望删除不存在TagName的对象
$dataset1 = @(
@{
MachineName = "AAA"
ID = "111"
TagName = "GroupA"
},
@{
MachineName = "BBB"
ID = "222"
TagName = "GroupB"
},
@{
MachineName = "CCC"
ID = "111"
TagName = ""
},
@{
MachineName = "DDD"
ID = "333"
TagName = ""
},
@{
MachineName = "EEE"
ID = "111"
TagName = ""
}
}
因此,删除 $dataset1 后应包含以下内容:
$dataset1 = @(
@{
MachineName = "AAA"
ID = "111"
TagName = "GroupA"
},
@{
MachineName = "BBB"
ID = "222"
TagName = "GroupB"
}
}
您可以使用Where-Object
(或别名where
)。 Where-Object
returns 脚本块语句为真的所有对象
$dataset1 = $dataset1 | Where-Object { $_.TagName }