Powershell:从.CSV文件中读取一列,然后在开头添加特定字符串并再次导出

时间:2015-10-22 13:40:48

标签: csv powershell

我正在尝试编写一个脚本,该脚本将读取通过查询AD生成的CSV以获取用户信息(该部分已完成),但之后将允许我在字符串的每个值的开头添加一个字符串。 CSV文件,然后将其导出。

例如,我们有这个CSV文件:

  

“显示名称”, “办公室”
  鲍勃,7142
  珍妮特,8923
  圣诞老人,0912
  NicCage,0823

我想为“Office”输入每个条目,在它之前添加字符串“BUG”,然后将其导出。修改后的CSV应如下所示:

  

“显示名称”, “办公室”
  鲍勃,BUG7142
  珍妮特,BUG8923
  圣诞老人,BUG0912
  NicCage,BUG0823

此时,我一直试图只读“Office”列,然后用“Write-Host”显示它。我的想法是,如果我能做到这一点,那么也许我可以创建一个类似的新变量:

$BUG = "BUG"
$NewVar = $BUG$Office

希望看起来像第二个CSV文件。我对powershell脚本非常新。

我到目前为止所做的尝试是:

尝试#1:

$UserList = Import-CSV C:\Users\username\CSV.csv
$UserList | ForEach-Object ($_.Office) { $UserList }

尝试#2:

$projectName = import-csv  C:\Users\username\CSV.csv | % {$_.Office}
$BUG = "BUG"
$projectName | ForEach-Object ($_) {$projectName}

尝试#3:

$UserList = Import-CSV C:\Users\username\CSV.csv
#ForEach ($Office in $Userlist) {
#Write-Host $UserList.Office
#}

尝试#4:

Import-Csv "C:\Users\username\CSV.csv" -Header       ("displayname","Office","whenCreated","EmailAddress") | Select-Object Office | Export-CSV -Path C:\users\Username\test.csv

在使用ForEach-Object循环结构之前,我已经让它读出了Office编号,但是它永远不会停止读取办公室编号,这样就没用了。

我认为我正朝着正确的方向前进,但我无法弄清楚如何修改这样的列。

1 个答案:

答案 0 :(得分:2)

不是尝试提取Office列,只需将完整数据集(所有列)传递给ForEach-Object,而是更改Office属性的值并将其传回{ {1}}:

Export-Csv