将哈希表中的文本替换为哈希表

时间:2017-10-15 23:22:43

标签: powershell csv hashtable

我试图从工资单系统导出Import-Csv "Newusers.csv"。我需要将其导入Active Directory,并且需要为每个用户更新CSV文件中的physicalDeliveryOfficeName列。

目前,从工资单系统用户导出网站名称的代码。我需要用站点名称替换此代码。我有一个哈希表,其中包含站点代码=站点名称。我有超过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'
}

2 个答案:

答案 0 :(得分:2)

  

我有超过100个网站位置

在这种情况下,你肯定是在正确的道路上。

在访问哈希表时使用站点代码值作为键:

datetime

答案 1 :(得分:1)

要使用CSV中的站点名称替换站点代码,请导入CSV,修改列,然后将数据导出回CSV。有几种方法可以解决这个问题,例如:使用带有calculated propertySelect-Object替换整个列:

$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