Powershell.CSV值管道传递给选择对象返回空记录?

时间:2018-04-11 18:28:51

标签: powershell csv pipe import-csv select-object

当我使用import-csv从.csv文件中检索数据时

enter image description here

我可以使用Import-CSV在控制台窗格中检索文件中的数据:

jQuery('#copy-all').on('click', function(e) {
if($(this).is(':checked',true)) {
$("#copy-all-rows").fadeOut(800, function(){ 
$(this).remove();
});
$("#copy-all-rows").clone().appendTo('#table2');
}
})

enter image description here

但是,当我将该输出传递给select-object语句时,会检索到相同数量的行,但它们现在都是空的。

import-csv \\TestPath\licenses_v2.csv 

enter image description here

这是在我开始测试以下两个单独的脚本之后发生的,试图在SQL表的INSERT语句之前进行TRUNCATE。

import-csv \\TestPath\licenses_v2.csv | 
select-object FirstName,LastName,Department,Title

我需要做些什么来扭转这种局面?

1 个答案:

答案 0 :(得分:4)

当您使用以管道分隔的CSV时,默认为逗号。您可以在屏幕#1中看到数据,因为它为每列创建了一个对象。您看到标题为空,因为powershell与这些文字标题下的任何对象都不匹配(因为只有一个标题,名为all的组合。)

请注意,Select匹配时可以返回标题:

'' | Select Name,Date

Name Date
---- ----

要修复,只需使用Import-Csv -Delimiter '|'

请参阅https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/import-csv?view=powershell-6#optional-parameters

  

如果在文件中指定了除实际字符串分隔符以外的字符,则Import-Csv无法从CSV字符串创建对象。相反,它返回字符串。