【问题标题】:Powershell Where command not workingPowershell Where命令不起作用
【发布时间】:2015-12-18 05:57:50
【问题描述】:

我有一个文本文件,其中包含由“=”符号分隔的元素(即 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,然后重试。
  • 当我这样做时,我最终得到了这两个元素。我只需要右边那个。
  • 啊...但是如果我再做 $Mycolor.Setting 我确实得到了元素。那种作品。当我想使用它时,我宁愿不必将“.setting”添加到变量中。

标签: powershell


【解决方案1】:

Setting 属性的值本身没有Title 属性。

你需要申请Where你提取你需要的属性值(如mentioned in the comments):

$BlueSettings = $Import_Cfg |where {$_.Title -match "Blue"} |Select-Object -ExpandProperty Setting

或者,使用属性枚举:

$BlueSettings = ($Import_Cfg |where {$_.Title -match "Blue"}).Setting

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多