Powershell 从哈希表替换CSV中的文本

Powershell 从哈希表替换CSV中的文本,powershell,csv,hashtable,Powershell,Csv,Hashtable,我正在尝试导入Csv“Newusers.Csv”,这是从工资系统导出的。我需要将其导入Active Directory,并需要为每个用户更新CSV文件中的physicalDeliveryOfficeName列 当前,从工资系统用户导出的站点名称代码。我需要用站点名称替换此代码。我有一个哈希表,它的站点代码=站点名称。我有超过100个站点位置 $hashtable = @{ 28 = 'Example Site 1' 29 = 'Example Site 2' 36 = '

我正在尝试导入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'
}
我有超过100个站点位置

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

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

Import-Csv newusers.csv |ForEach-Object {
    Set-ADUser -Identity $_.username -replace @{physicalDeliveryOffice=$hashtable[$_.sitecode]}
}
我有超过100个站点位置

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

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

Import-Csv newusers.csv |ForEach-Object {
    Set-ADUser -Identity $_.username -replace @{physicalDeliveryOffice=$hashtable[$_.sitecode]}
}

要使用CSV中的站点名称替换站点代码,请导入CSV,修改列,然后将数据导出回CSV。有几种方法可以实现这一点,例如,使用
Select Object
将整个列替换为:

或者只需在循环中更改列中的值:

$file = 'C:\path\to\newusers.csv'
$csv  = Import-Csv $file
foreach ($record in $csv) {
    $record.sitecode = $hashtable[$_.sitecode]
}
$csv | Export-Csv $file -NoType

要使用CSV中的站点名称替换站点代码,请导入CSV,修改列,然后将数据导出回CSV。有几种方法可以实现这一点,例如,使用
Select Object
将整个列替换为:

或者只需在循环中更改列中的值:

$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?使用
-Append
参数:
导出csv-Append-Path“C:\xxxxx\file.csv”
很抱歉我误解了这个问题,非常感谢您的快速回复。如果我需要更新csv文件(因为这也将用于另一个系统),我需要使用什么命令来代替set aduser来更新csv?使用
-Append
参数:
Export csv-Append-Path“C:\xxxxx\file.csv”
对不起,我误解了这个问题,我的错了