Powershell Export-Csv问题

时间:2015-04-08 08:54:12

标签: powershell

我尝试从psobject导出csv格式的文件。 在我的psoobject内,我有多个变量的自定义属性:

$1 = 8
$2 = 8
$props = @{

    'test' = "$1/$2"
}

$csv = New-Object -TypeName psobject -Property $props

$csv | select * | Export-Csv  C:\Users\adm-tc5190\Desktop\report\v2\test.csv 

你可以看到我的测试'属性是来自2个变量$ 1和$ 2的对象。 但是当我在我的文件中导出-csv时,我的测试结果输出错误了#39;属性。

以下是我在csv文件中输出的内容:

8月8日但必须是8/8

提前感谢您的帮助

2 个答案:

答案 0 :(得分:2)

csv文件中的值是字符串"8/8" - 它的Excel假定该字符串是部分日期,并以这种方式格式化。

您可以通过查看文件的实际内容进行验证:

PS C:\> Get-Content "C:\Users\adm-tc5190\Desktop\report\v2\test.csv"
#TYPE Selected.System.Management.Automation.PSCustomObject
"test"
"8/8"

您可以使用“文本导入向导”导入数据,而不是直接使用Excel打开csv文件(数据标签 - &gt;获取外部数据 - &gt; 来自文本< / strong>),并在最后一步中将“Text”指定为数据类型

答案 1 :(得分:0)

如果你能解释一下你想要实现的目标,或许我们可以提供更好的方法吗? Excel的默认行为是尝试确定数据类型,8/8将被“翻译”为日期格式,这是一种excel行为,与Powershell无关或如何处理数据。

通过双击csv文件并直接在Excel中打开,我成功地重新创建了该问题。如果您打开一个空白的Excel文件并导入,如下面提到的Mathias R. Jessen,在文本导入向导的第3步中指定“列数据格式”=文本,我相信您将获得您期望的行为。它可能比您想要的更多,但这就是您获得所需结果的方式。