使用select-object in powershell中的CSV列标题不正常 我正在努力通过SFTP处理给我的团队提供给我的团队的原始CSV文件,并将该格式更新为适合我们系统需求的正确格式。我被要求通过powershell脚本脚本,所以脚本ca ...

问题描述 投票:0回答:1

雇员

email
123[电子邮件保护]456$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
[电子邮件保护]
代码为:
您使用所需的属性名称创建新对象:

$formatFile | Select-Object -Property @{Name = 'EMAIL_ADDRESS'; Expression =....

但是您永远不会将这些更改存储在CSV中,它只是被输出。因此,
$pitstopPath
powershell csv
1个回答
1
投票
$finalPath

完全相同,没有任何更改。您应该做的是将输出从上述

Select-Object
线输出到
Export-Csv $finalPath

。 除了解决这个问题之外,您没有出于特定原因进行许多不需要的操作,您的代码可能很简单:

$csvPath = 'file_path_raw_file.csv'
$finalPath = 'final_file_sys_load.csv'

Import-Csv $csvPath | ForEach-Object {
    $values = $_.PSObject.Properties.Value
    if ($values -notcontains $null -and $values -notcontains '') {
        [pscustomobject]@{
            EMAIL_ADDRESS = $_.Email
            SrchKeyEMPLID = $_.EmployeeID
            EMAIL1_NOTIFY = 'Y'
        }
    }
} | Export-Csv $finalPath -NoTypeInformation
    

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.