如何用PowerShell找出未包含指定值的变量名称?
筛选不含指定值的PowerShell变量名称
可行方案
方法一:通过Get-Variable匹配变量名
直接获取符合命名规则的变量,筛选其值不含"Pears"的变量名:
Get-Variable -Name fruit* | Where-Object { $_.Value -notcontains "Pears" } | Select-Object -ExpandProperty Name
方法二:手动构造变量名与值的映射集合
如果变量命名没有统一规则,可以手动定义包含名称和值的对象集合,再进行筛选:
# 构建变量名和对应值的自定义对象 $varCollection = [PSCustomObject]@{ Name = 'fruit'; Value = $fruit }, [PSCustomObject]@{ Name = 'fruit2'; Value = $fruit2 }, [PSCustomObject]@{ Name = 'fruit3'; Value = $fruit3 } # 筛选并提取变量名 $varCollection | Where-Object { $_.Value -notcontains "Pears" } | Select-Object -ExpandProperty Name
原代码问题说明
你之前的代码直接将变量的**值(数组)**传入管道,Where-Object筛选出的是不含"Pears"的数组本身,后续的Select $_只是输出该数组的元素,自然无法得到变量名。要获取变量名称,必须让管道中同时携带变量的名称和对应的值,这样才能在筛选条件满足后提取出变量名。
内容的提问来源于stack exchange,提问作者IanB
相关产品推荐
相关产品推荐

