Powershell:导入 CSV,然后再导出

Powershell: Import CSV and then export it afterwards

首先我要感谢你帮助我或者至少阅读我的 post

我有一个 CSV 文件名作为具有两个值的用户

firstname,lastname
John,Doe
Jane,Doa

我想使用这些值并用它创建许多值,然后将其导出到另一个 CSV

这是代码

$users = Import-Csv C:\Temp\users.csv

foreach ($user in $users) {
    $firstname = $user.firstname
    $lastname = $user.lastname
    $username = ($firstname.ToLower()+"."+$lastname.ToLower()) -replace '\s',''
    $email = $username+"@email.com"
    $Location = "Paris"
    $ou = "OU=Users,OU=ORG,DC=test,DC=local" 

    Select-Object $firstname,$lastname,$username,$email,$Location,$ou | export-csv C:\Temp\userstest.csv
}

此代码的问题是:我得到一个空的 CSV 作为导出

非常感谢

您正在重新导出包含每一行的 csv,这是导致您出现问题的原因。

相反,让我们改变命令的顺序并使它起作用。此外,您可以使用计算属性来缩短它,就像这样。

$users = Import-Csv C:\Temp\users.csv
$Users | Select firstname, lastname,`
  @{l='username';exp={($_.firstname.ToLower()+"."+$_.lastname.ToLower()) -replace '\s',''}},`
  @{l='email';exp={"$($($_.firstname.ToLower()+"."+$_.lastname.ToLower()) -replace '\s','')@email.com"}},@{l="Location";exp={"Paris"}}, `
  {l='ou';exp={"OU=Users,OU=ORG,DC=test,DC=local"}}  | export-csv c:\temp\some.csv

在我的 PC 上测试过,它工作得很好!