我有一个从外部源(NetSuite)自动生成的csv文件 我希望使用csv文件中的数据来更新Active Directory用户帐户以添加或更新" Manager"
NetSuite为我提供了一个csv文件,其中包含电子邮件和经理作为2列标题。 电子邮件 - 包含员工电子邮件地址,经理包含最后一种格式的经理名称。
我想将这两列转换为可在
中使用的数据Set-AdUser -Identity user.name -manager first.last
目标1是从电子邮件地址列中删除@domain 目标2是将Last,First重新排序为first.last
Import-Csv c:\test.csv
Email | Supervisor
user.1@test.com | "Number1, Manager"
user.2@test.com | "Number2, Manager"
我希望能够将其导出到看起来像这样的csv文件
Email | Supervisor
user.1 | Manager.Number1
user.2 | Manager.Number2
因此,我想要在AD中自动化Employee-Manager字段的工作流程是: 1. NetSuite在预定时间导出csv文件 2. PowerShell脚本导入NetSuite csv并按照描述编辑数据。 3.使用可用数据将Csv导出到新csv 4.来自新csv的Set-AdUser -Manager的PowerShell脚本
我寻求指导的是第2步和第3步
这可能吗?如果我自己解决这个问题,我会更新。
修改
我已经找到了目标1 现在我需要做的就是采取" Last,First"列中的数据并将其更改为" First.Last"
编辑2 - 这似乎并不安静......
$txt = import-csv .\book1.csv | % {
$_.Email = $_.Email -replace "@test.com", ""
$_
}
export-csv -InputObject $txt -NoTypeInformation .\newbook1.csv
答案 0 :(得分:0)
你可以尝试:
Import-Csv -Path .\book1.csv | ForEach-Object {
#Remove @AndEverthingThatFollows
$_.Email = $_.Email -replace "@.*$"
#Replace "LastName, FirstName" (space optional) with FirstName.Lastname
$_.Supervisor = $_.Supervisor -replace '(\w+),\s*?(\w+)', '$2.$1'
} | Export-Csv -NoTypeInformation -Path .\newbook1.csv