如何在 powershell 中解析由 format-table 生成的 table 单元格中的字符串?

How to parse strings in a table cell generated by format-table in powershell?

我使用以下 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 部分。 但没有工作。目前我认为我已经走到了死胡同,不知道我可以去哪里...

  1. format-table 用于将对象显示为文本 table。但是您想访问 import-csv 给您的对象的内部结构。所以你不想 format-table.
  2. $contentimport-csv 构建的对象的 ArrayList,而不是 ArrayList 或数组的 ArrayList。您已经使用 -Header 选项告诉 import-csv 要构建什么样的对象,所以只需使用它即可。
  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

我想这就是你要找的。