如何解析PowerShell中format-table生成的表格单元格中的字符串?

时间:2016-06-21 23:25:06

标签: powershell powershell-v2.0 powershell-v3.0 powershell-v4.0

我使用以下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 个答案:

答案 0 :(得分:1)

  1. format-table用于将对象显示为文本表。但是你想要访问import-csv给你的对象的内部。所以你不想要format-table
  2. $contentimport-csv已构建的对象的ArrayList,而不是ArrayLists或数组的ArrayList。您已使用import-csv选项告诉-Header要构建哪种对象,所以只需使用它。
  3. SubString采用起始索引和长度,而不是起始索引和结束索引。
  4. 进行相关更改后,我收到了以下代码:

    $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
    

    我认为这就是你要找的。