PowerShell:将2个字符串放入哈希表中,然后输出到.csv

时间:2016-04-28 00:07:30

标签: csv powershell

PowerShell新手在这里,

我需要:

  1. 在递归本地目录中获取文本文件,其中包含一个公共字符串 students.txt
  2. 从#结果文件集中获取另一个字符串 gc.student =" 名称名称" 1并获取名称(s)。
  3. 放置来自#1的文件名,只放置来自#2的名称名称(不是 gc.student ="" )进入哈希表,其中文件名与其对应的名称名称配对。
  4. 将哈希表输出到包含2列的Excel电子表格:文件名称
  5. 我已经想通了,在这里和其他地方搜索和学习过,如何将#1输出到屏幕,但不知道怎么把它放到#2的哈希表中:

    $documentsfolder = "C:\records\"
    foreach ($file in Get-ChildItem $documentsfolder -recurse | Select String -pattern "students.txt" ) {$file}
    

    我想在#2中获取名称我需要使用RegEx,因为有时可能只有1个名称。 对于输出到Excel,这个:| Export-Csv -NoType output.csv

    感谢我的任何帮助。

1 个答案:

答案 0 :(得分:0)

我认为这应该让你开始。解释在代码注释中。

# base directory
$documentsfolder = 'C:\records\'

# get files with names ending with students.txt
$files = Get-ChildItem $documentsfolder -recurse | Where-Object {$_.Name -like "*students.txt"}

# process each of the files
foreach ($file in $files)
{
    $fileContents = Get-Content $file
    $fileName = $file.Name

    #series of matches to clean up different parts of the content
    #first find the gc.... pattern
    $fileContents = ($fileContents | Select-String -Pattern 'gc.student=".*"').Matches.Value
    # then select the string with double quotes
    $fileContents = ($fileContents | Select-String '".*"').Matches.Value
    # then remove the leading and trailing double quotes
    $fileContents = $fileContents -replace '^"','' -replace '"$',''

    # drop the objects to the pipeline so that you can pipe it to export-csv
    # I am creating custom objects so that your CSV headers will nave nice column names
    Write-Output [pscustomobject]@{file=$fileName;name=$fileContents}
} | Export-Csv -NoType output.csv