从 CSV 文件中拆分名称

split Name from CSV file

我正在编写一个脚本来创建共享邮箱和安全组,然后将用户添加到安全组,但用户名的格式为 "firstname lastname" (john doe),脚本无法找到用户,只有当我将名称切换为 "doe, john" 时它才有效。

我确实找到了一些可以从 "last, first" 切换到 "first, last" 的文章,但是当我尝试更改时它不起作用。

这是我目前所拥有的,但没有用:

Import-Csv "c:\import.csv" | foreach { 
    $_.user = "{1) {0}" -f ($_.user -split '(0), (1)' )
    $_ 
} | Export-Csv "c:\export.csv"

您需要以空格分隔(或逗号后跟空格,具体取决于您的实际数据)。不要在拆分表达式中包含值的分组子匹配项。使用 -replace 运算符时,您只包含分组的子匹配项,这是我更喜欢的:

Import-Csv 'c:\import.csv' | ForEach-Object { 
    $_.user = $_.user -replace '^(.*) (.*)$', ', '
    $_ 
} | Export-Csv 'c:\export.csv' -NoType

作为 ForEach-Object 的替代方案,您可以使用 Select-Objectcalculated property:

Import-Csv 'c:\import.csv' |
    Select-Object -Property *,@{n='user';e={$_.user -replace '^(.*) (.*)$', ', '}} -Exclude user |
    Export-Csv 'c:\export.csv' -NoType

谢谢 Ansgar,但我的 CVS 文件不包含逗号,所以我在下面调整了你的代码和最终版本,再次感谢

Import-Csv 'c:\import.csv' |
Select-Object -Property *,@{n='user';e={$_.user -replace '^(.*) (.*)$', ', '}} -Exclude user | 
Export-Csv 'c:\export.csv' -NoType