【问题标题】:Simple PowerShell Script to loop through 1 CSV file to create a new CSV file from another简单的 PowerShell 脚本循环遍历 1 个 CSV 文件以从另一个文件创建新的 CSV 文件
【发布时间】:2013-08-06 08:15:00
【问题描述】:

我知道标题听起来令人困惑,但是一旦我描述了这个,我确信有一种非常简单的方法可以执行我需要做的事情。我对 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

您能提供的任何帮助将不胜感激......

【问题讨论】:

    标签: powershell


    【解决方案1】:

    借用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
    

    【讨论】:

    • 这完全符合我的需要。非常感谢!我唯一需要添加的是从结果中删除引号的方法,以便它是自动化的。我可以自己解决这个问题。
    猜你喜欢
    • 2021-08-15
    • 2019-07-21
    • 1970-01-01
    • 1970-01-01
    • 2014-04-10
    • 2014-12-10
    • 2016-03-13
    • 2019-04-11
    相关资源
    最近更新 更多