[英]Powershell Where command not working
我有一个文本文件,其中包含用'='符号分隔的元素(即color1 = red,color2 = blue等。
我使用了import-csv命令并提供标题(即
$Import_Cfg = Import-Csv .\Env.cfg -Header Title,Setting -Delimiter =
)
现在,如果我想将特定项目分配给另一个变量(如果我知道索引号)并且我已经使用了这种方法,那么这种方法就很好了,但是它对我来说并不总是有效的,因为我并不总是知道还有其他数据。
我以为是这样的:
$MyColor1 = $Import_Cfg.Setting |where {$_.Title -match "Blue"}
$MyColor2 = $Import_Cfg.Setting |where {$_.Title -match "Red"}
它应该可以工作,但是任何一项我都没有得到回报。 当我输入$ Import_cfg时,我可以看到整个数组(没有“ =”符号)。 如果我告诉使用命令
$MyColor1 = $import_cfg[0].setting
我得到正确的答案。
显然,我不是在使用颜色,而是将一堆需要分配给变量的其他项用于其他地方。 对我在做什么错有任何想法吗? 我读过的所有内容都表明我上面的内容应该起作用。
请不要大惊小怪为什么我要使用import-csv和get-content。 我敢肯定任何一个都可以。 这是我使用的一种方法,计算上没关系。 如果以编程的方式有所作为,我全都可以听到!!!
感谢你的帮助。
Setting
属性本身的值没有Title
属性。
您需要在提取所需的属性值之前应用到Where
(如注释中所述 ):
$BlueSettings = $Import_Cfg |where {$_.Title -match "Blue"} |Select-Object -ExpandProperty Setting
或者,使用属性枚举:
$BlueSettings = ($Import_Cfg |where {$_.Title -match "Blue"}).Setting
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.