行中有多余字符

时间:2019-01-23 18:28:49

标签: powershell character extra

为什么此代码将[]或类似代码放在结果输出底部的第二栏中?

$objs = @();
$output = Import-Csv -Path "c:\users\patrick\desktop\RelayGroups\file2concatenate.csv" | ForEach {
    $Object = New-Object PSObject -Property @{           
        unique_sis_group_id  = [String]::Concat($_.unique_sis_group_id, $_.course)
        group_name           = $_.section
        unique_sis_user_id   = $_.unique_sis_user_id
        unique_sis_school_id = $_.unique_sis_school_id 
    }
    $objs += $Object;
}
$objs
$objs | Export-Csv -NoTypeInformation c:\users\patrick\desktop\RelayGroups\groups.csv

enter image description here

1 个答案:

答案 0 :(得分:0)

由于在您的.csv文件中包含[String]::Concat()所串联并包含在unique_sis_group_id属性中的Unicode字符,因此在输出中得到该符号。

我喜欢在导入之前使用Notepad ++查看(如果需要清除)我的平面文件。 在记事本++中打开文件,然后打开“编码”菜单。我的csv文件使用UTF-8编码,并且我已插入Unicode字符(在本示例中为U + 08FE)

Notepad++ encoding menu

运行Powershell时,在*Pre-Calculus Algebra (W)

之后可以看到Unicode字符。

enter image description here

您可以只删除Notepad ++中的字符并运行Powershell,或者如果发现该CSV的源每次生成.csv时始终插入此特殊字符,则可以使用-replace删除该字符。 Import-Csv之前文件中的字符。LazyWinAdmin博客here上有一个很好的示例。