如何在PowerShell中删除不存在指定对象属性的条目?
Hey,这事儿好办!要从你的数据集里移除那些TagName为空的对象,用PowerShell的Where-Object筛选器就能轻松实现。
具体实现步骤
1. 先确认你的原始数据集
$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 = "" } )
2. 过滤掉TagName为空的条目
直接用管道把数据集传给Where-Object,只保留TagName不等于空字符串的对象:
$dataset1 = $dataset1 | Where-Object { $_.TagName -ne "" }
3. 查看筛选后的结果
执行$dataset1就能得到你想要的内容:
$dataset1
输出如下:
Name Value ---- ----- MachineName AAA ID 111 TagName GroupA MachineName BBB ID 222 TagName GroupB
额外场景:处理缺失TagName属性的对象
如果你的数据集里还存在完全没有TagName属性的对象(不只是空值),可以把条件改成同时检查属性存在且非空:
$dataset1 = $dataset1 | Where-Object { $_.PSObject.Properties.Name -contains "TagName" -and $_.TagName -ne "" }
这样就能确保只留下符合要求的对象啦!
内容的提问来源于stack exchange,提问作者Baadshah




