powershell - 将 CSV 值从一个 CSV 文件复制到另一个文件的匹配 CSV 值
问题描述
我有两个 CSV 文件,并且都有一个公共列,即 EmailAddress 标题。powershell 脚本应该将电话号码从一个 csv 复制到电子邮件地址匹配的另一个。
第一个 CSV 文件 users.csv 是一个 Get-ADUser csv 导出文件,具有以下标题:
"SamAccountName";"DisplayName";"Surname";"GivenName";"telephoneNumber";"EmailAddress"
第二个 CSV 文件是我们地址簿的导出文件,具有以下标题:
"RoomNr";"Name";"TelNr";"Cordless";"Fax";"Department";"Title";"EmailAddress"
我的目标是将“TelNr”复制到 users.csv,其中“EmailAddress”的值相等。
我的想法是这样的:
$users = Import-Csv -Path C:\users.csv -Delimiter ";"
$addressbook = Import-Csv -Path C:\addressbook.csv -Delimiter ";"
foreach ($record in $users) {
$mail = $record.EmailAddress
$match = $addressbook | Where-Object {$_.EmailAddress -like $mail}
$record.telephoneNumber = $match.TelNr
}
但它根本不起作用。文件中没有写入任何内容。知道我哪里出错了吗?
解决方案
你那么近..
所缺少的只是将更新的$users
对象数组输出为 CSV 文件。
$users = Import-Csv -Path 'C:\users.csv' -Delimiter ";"
$addressbook = Import-Csv -Path 'C:\addressbook.csv' -Delimiter ";"
foreach ($record in $users) {
$mail = $record.EmailAddress
$record.telephoneNumber = ($addressbook | Where-Object { $_.EmailAddress -eq $mail }).TelNr
}
# output to new csv file
$users | Export-Csv -Path 'C:\UsersComplete.csv' -Delimiter ';' -NoTypeInformation
推荐阅读
- mysql - 处理 Flutter 应用程序的 POST 方法时出错
- apache-kafka - 如何在分布式模式下运行 Kafka-connect-replicator?
- php - if else for PHP 三元运算符使用数据表
- bazel - 访问 bazel BUILD 文件中的运行文件路径
- hyperledger - Hyperledger Indy 错误:池与此地址空间上的其他池重叠
- excel - 使用VBA将行号插入单元格
- c++ - 使用主函数
- ios - 来自 Swift 代码的抗锯齿像素被 OpenCV 转换为不需要的黑色像素
- ios - 如何快速禁用特定视图(名为“sideV1”和“sideV2”)的touchesbegan功能?
- sql-server - 选择语句数据返回慢从特定月份开始