【问题标题】:How to parse strings in a table cell generated by format-table in powershell?如何在powershell中解析格式表生成的表格单元格中的字符串?
【发布时间】:2016-06-22 07:49:46
【问题描述】:

我使用以下comlet获取数据:

import-csv .\ConnectionStrings.txt -Delimiter "`t" -Header Firms, URLs, Config, Type | format-table -Property Firms, URLs -HideTableHeaders -outvariable content

#Not working part
for($i = 0; $i -lt $content.Count; $i++){
    $url = $content[$i][1]    
    $instance = $url.SubString(0, $url.IndexOf(".") - 1)
}

下面是 import-csv... cmdlet 的结果:

value1    url1.test.com
value2    url2.test.com
value3    urle3.test.com
...
valuen    urln.test.com

我使用 getType 来检查 $content,它是 ArrayList。我想我可以将它用作 C# ArrayList,因为我需要解析第二列来获取 url 部分。 但不工作。目前我认为我在死胡同,不知道我可以去哪里......

【问题讨论】:

  • 请附上不工作的 powershell 代码、它在做什么的描述,以及你希望看到的尽你所能的描述。
  • @PaulHicks 嗨,我已经添加了代码,谢谢

标签: powershell powershell-2.0 powershell-3.0 powershell-4.0


【解决方案1】:
  1. format-table 用于将对象显示为文本表格。但是您想访问import-csv 给您的对象的内部结构。所以你不想要format-table
  2. $contentimport-csv 构建的对象的 ArrayList,而不是 ArrayLists 或数组的 ArrayList。你已经告诉import-csv 使用-Header 选项构建什么样的对象,所以就使用它。
  3. SubString 采用起始索引和长度,而不是起始索引和结束索引。

进行相关更改,我得到以下代码:

$content = import-csv .\ConnectionStrings.txt -Delimiter "`t" -Header Firms, URLs, Config, Type 

for($i = 0; $i -lt $content.Count; $i++){
    $url = $content[$i].URLs
    $instance = $url.SubString(0, $url.IndexOf("."))
    Write-Host $instance
}

给出这个输出:

url1
url2
urle3
urln

我想这就是你要找的东西。

【讨论】:

  • 嗨,保罗,感谢您的回答。这真的很有帮助。最后一个问题,我的原始代码中的 -outvariable 有什么问题?
  • 什么都没有。它正确地将格式化表格的对象放入$content。问题是您不想要将其他对象格式化为表格的对象:您需要直接使用其他对象。
  • 我之前的评论有点难以解析。考虑这个类比:import-csv -Header x, y, z 创建与电子表格等效的东西,您可以在其中导航、更改其中的值、检查其他值等。format-table -outvariable content 然后将该电子表格转换为 PDF 文件。你所能做的就是把它打印出来。
  • 嗨@PaulHicks,感谢您的解释,真的很有帮助
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-15
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
相关资源
最近更新 更多