我正在处理通过 SFTP 发送给我团队的原始 CSV 文件,并将格式更新为符合我们系统需求的正确格式。我被要求通过 PowerShell 编写此脚本,以便可以安排脚本在非技术团队成员的本地计算机上每天运行。
为了重命名列标题,我在其他项目中经常使用“Select-Object”表达式。但是,出于某种原因,它在本用例中不起作用。脚本运行完成并保存最终文件,但保留原始标题。
使用 Select-Object 方法将两列从“Email”重命名为“EMAIL_ADDRESS”,将“EmployeeID”重命名为“SrchKeyEMPLID”不起作用。输入的 csv 文件的格式如下:
代码如下:
$csvPath = 'file_path_raw_file.csv'
$tempPath = 'file_dropping_null_rows.csv' ##needed for validations
$pitstopPath = 'file_dropping_unneeded_cols.csv'
$finalPath = 'final_file_sys_load.csv'
Import-Csv $csvPath | Where-Object {
$_.PSObject.Properties.Value -notcontains $null -and $_.PSObject.Properties.Value -notcontains ""
} | Export-Csv $tempPath -NoTypeInformation
Import-Csv $tempPath | Select-Object Email,EmployeeID | Export-Csv $pitstopPath -NoTypeInformation
$formatFile = Import-Csv $pitstopPath
$formatFile | Add-Member -MemberType NoteProperty -Name 'EMAIL1_NOTIFY' -Value 'Y'
$formatFile | Select-Object -Property @{Name = 'EMAIL_ADDRESS'; Expression ={$_.Email}},@{Name='SrchKeyEMPLID';Expression={$_.EmployeeID}}
$formatFile | Export-Csv -path $finalPath -NoTypeInformation
$checksBals = Import-Csv $finalPath
$header_values = $checksBals[0].PSObject.Properties.name
$header_values