用哈希表替换CSV中的文本
问题描述:
我正在尝试从工资系统导出Import-Csv "Newusers.csv"
。我需要将其导入Active Directory,并需要为每个用户更新CSV文件中的physicalDeliveryOfficeName
列。用哈希表替换CSV中的文本
当前从工资系统用户导出了sitename的代码。我需要用网站名称替换此代码。我有一个散列表,它的网站代码=网站名称。我有超过100个网站位置。
$hashtable = @{
28 = 'Example Site 1'
29 = 'Example Site 2'
36 = 'Example Site 3'
37 = 'Example Site 4'
50 = 'Example Site 5'
51 = 'Example Site 6'
52 = 'Example Site 7'
53 = 'Example Site 8'
}
答
我有超过100个站点位置
在你肯定是在正确的道路上的情况。
Import-Csv newusers.csv |ForEach-Object {
Set-ADUser -Identity $_.username -replace @{physicalDeliveryOffice=$hashtable[$_.sitecode]}
}
答
要替换站点名称的站点代码在您的CSV导入CSV,修改列,然后将数据导出回:
访问哈希表时,请使用本站的编码值的关键CSV。有几种方法可以解决这个问题,例如通过更换使用Select-Object
与calculated property整列:
$file = 'C:\path\to\newusers.csv'
(Import-Csv $file) |
Select-Object *,@{n='SiteName';e={$hashtable[$_.sitecode]}} -Exclude sitecode |
Export-Csv $file -NoType
或通过简单地在一个循环改变的列中的值:
$file = 'C:\path\to\newusers.csv'
$csv = Import-Csv $file
foreach ($record in $csv) {
$record.sitecode = $hashtable[$_.sitecode]
}
$csv | Export-Csv $file -NoType
感谢您的快速回复。如果我需要更新csv文件(因为这也将用于另一个系统)什么是我需要使用set-aduser的命令来更新csv – Lee
使用'-Append'参数:'Export- Csv -Append -Path“C:\ xxxxx \ File.csv”' – Manu
@Manu不能这样工作。 –