简单的PowerShell脚本循环访问1个CSV文件,以便从另一个文件创建新的CSV文件

时间:2013-08-05 14:55:23

标签: powershell

我知道标题听起来令人困惑,但是一旦我描述了这一点,我肯定有一种非常简单的方法来执行我需要做的事情。我是PowerShell的新手,我正在尝试执行一项特定的任务,似乎很难为Web找到一个好的答案。

过去几天我一直在搜索连接数据和将文件连接在一起的方法,但没有任何具体到这个任务的内容。所有示例都显示了如何显示数据,但没有任何内容循环并将数据添加到一起以创建新的csv文件。如果有的话,我已经过度研究了这个问题,不得不提出这个信息,看看我能用我已经尝试的所有无用选项让我的脑子变得杂乱无章......

我有两个csv文件。我把它们称为csv,但它们实际上只是一列信息。

文件:

Users.csv

Offices.csv

Users.csv 文件包含网络用户名列表。 Offices.csv 文件包含与办公地点对应的数字列表。

我想要发生的是使用一个循环,它将从users.csv文件中获取每个用户,并在单独的csv文件中创建一个新行,并将每个办公室添加到其中。

实施例

Users.csv

NTNAME
domain\user1
domain\user2
domain\user3

Offices.csv

OFFICES
0001
0023
0043
0067

合并后,我希望csv文件看起来像这样:

NTNAME,OFFICES
domain\user1,0001
domain\user1,0023
domain\user1,0043
domain\user1,0067
domain\user2,0001
domain\user2,0023
domain\user2,0043
domain\user2,0067
domain\user3,0001
domain\user3,0023
domain\user3,0043
domain\user3,0067

非常感谢您提供的任何帮助......

1 个答案:

答案 0 :(得分:2)

借用Shay真棒CSV field enumeration code

$offices = Import-Csv 'C:\path\to\offices.csv'

Import-Csv 'C:\path\to\users.csv' | % {
  foreach ($prop in $_.PSObject.Properties) {
    $offices | select @{n=$prop.Name;e={$prop.Value}}, OFFICES
  }
} | Export-Csv 'C:\path\to\combined.csv' -NoTypeInformation