从CSV文件中拆分名称
我正在编写一个脚本来创建共享邮箱和安全组,然后将用户添加到安全组中,但用户名的格式为“firstname lastname”(john doe),脚本无法找到用户,只有当我将名称切换为“doe,john”时,它才能工作 我确实找到了一些文章可以从“最后,第一个”切换到“第一,最后一个”,但当我试图改变它时,它不起作用 到目前为止,这就是我所拥有的,但它不起作用:从CSV文件中拆分名称,csv,powershell-3.0,Csv,Powershell 3.0,我正在编写一个脚本来创建共享邮箱和安全组,然后将用户添加到安全组中,但用户名的格式为“firstname lastname”(john doe),脚本无法找到用户,只有当我将名称切换为“doe,john”时,它才能工作 我确实找到了一些文章可以从“最后,第一个”切换到“第一,最后一个”,但当我试图改变它时,它不起作用 到目前为止,这就是我所拥有的,但它不起作用: Import Csv“c:\Import.Csv”| foreach{ $\.user=“{1){0}”-f($\.user-spli
Import Csv“c:\Import.Csv”| foreach{
$\.user=“{1){0}”-f($\.user-split'(0),(1))
$_
}|导出Csv“c:\Export.Csv”
您需要在空格处拆分(或逗号后跟空格,具体取决于实际数据的外观)。不要在拆分表达式中包含值的分组子匹配。在使用-replace
运算符时,只包含分组子匹配,这是我更喜欢的:
Import Csv'c:\Import.Csv'| ForEach对象{
$\.user=$\.user-替换“^(.*)(.*)$”、“$2,$1”
$_
}|导出Csv'c:\Export.Csv'-NoType
作为每个对象的ForEach
的替代方法,您可以使用Select Object
:
Import Csv'c:\Import.Csv'|
选择Object-Property*,@{n='user';e={$\u.user-replace'^(.*)(.*)','$2,$1'}}}-排除用户|
导出Csv'c:\Export.Csv'-NoType
谢谢Ansgar,但我的CVS文件不包含逗号,所以我在下面调整了您的代码和最终版本,再次感谢
Import-Csv 'c:\import.csv' |
Select-Object -Property *,@{n='user';e={$_.user -replace '^(.*) (.*)$', '$2, $1'}} -Exclude user |
Export-Csv 'c:\export.csv' -NoType
你的代码说CSV中的名字有“doe,john”的格式,但你的文本说他们有“john doe”的格式。是哪一个?如果名字有逗号,但我的CSV文件没有逗号,这很有效示例john doe想成为doe,john**这是最后的代码。感谢Ansgar Wiechers***“导入CSV”c:\Import.CSV'|选择对象-属性*@{n='user';e={$\.user-replace'^(.*)(.*),'$2,$1'}}-排除用户|导出Csv'c:\Export.Csv'-NoType'这就是我要求澄清的原因。