Powershell 导出CSV导出长度,但不导出名称
我有这个代码,我是从powershell运行的。当我在没有导出csv的情况下运行它时,屏幕上会显示所有文件夹名称Powershell 导出CSV导出长度,但不导出名称,powershell,export-to-csv,Powershell,Export To Csv,我有这个代码,我是从powershell运行的。当我在没有导出csv的情况下运行它时,屏幕上会显示所有文件夹名称 dir | select -expand fullname | % { ($_ -split '\')[7] #TYPE System.String "Length" "13" "18" "20" "22" "29" "21" "24" "11" "17" "20" "20" 但是如果我添加| export csv c:\test.txt,那么我在文件中看到的不是我期望的文件夹
dir | select -expand fullname | % { ($_ -split '\')[7]
#TYPE System.String
"Length"
"13"
"18"
"20"
"22"
"29"
"21"
"24"
"11"
"17"
"20"
"20"
但是如果我添加| export csv c:\test.txt
,那么我在文件中看到的不是我期望的文件夹名称,就像我在屏幕上看到的那样
dir | select -expand fullname | % { ($_ -split '\')[7]
#TYPE System.String
"Length"
"13"
"18"
"20"
"22"
"29"
"21"
"24"
"11"
"17"
"20"
"20"
导出Csv
导出对象属性及其值的表格。由于您的脚本正在生成字符串对象,并且它们唯一的属性是长度,所以您得到的就是长度
如果您只想保存列表,请使用
Out File
或Set Content
而不是Export Csv
前面的答案确实有效,但如果有人想将其输出到Csv文件中该怎么办。这不起作用:
$str_list = @('Mark','Henry','John')
$str_list | Export-Csv .\ExportStrList.csv -NoType
因为导出Csv
获取对象并输出属性。字符串[]的唯一属性是长度,因此CSV文件只包含长度
要解决这个问题,我们需要将字符串[]更改为对象[]。最简单的方法是使用选择对象
将每个字符串放入新对象[]的Name属性中,如下所示:
$str_list = @('Mark','Henry','John')
$obj_list = $str_list | Select-Object @{Name='Name';Expression={$_}}
$obj_list | Export-Csv .\ExportStrList.csv -NoType
只是为了重新迭代,Select Object
输出一个可以轻松操作的自定义PSObject。这是非常强大的信息,请明智地使用它。这对我很有用:
$data = @()
$row = New-Object PSObject
$row | Add-Member -MemberType NoteProperty -Name "name1" -Value "Test"
$row | Add-Member -MemberType NoteProperty -Name "name2" -Value 2
$data += $row
$data | Export-Csv "Text.csv" -NoTypeInformation
这是处理此问题的另一种方法:
默认情况下,输出文件输出
定义主数组列表
$MASTER_ARRAY_LIST = [System.Collections.ArrayList]@()
定义输出文件名
$OutputFilename="C:\TEMP\MyOutputFile.csv"
ForEach ( $Something in $List_of_Somethings) {
$CURRENT_RECORD_DETAILS = New-Object PSObject -Property @{'name'=$($Something.Name);'fullname'=$($Something.FullName);'id'=$($Something.ID)}
$MASTER_ARRAY_LIST.Add( $CURRENT_RECORD_DETAILS ) > $null
}
$MASTER_ARRAY_LIST.ToArray() | Select-Object -Property name,fullname,id | Export-Csv -Path $OutputFilename -NoTypeInformation
我还添加了| out文件“C:\TEST.TXT”-Append。ThanksI在我的csv文件中得到了长度。事实证明,在我调用的函数中,当我删除csv时,它有一些语音文字标记,开始正确返回对象。这一行对我帮助最大-$obj_list=$str_list | Select Object@{Name='Name';Expression={$}.您正在回答一个6年前的问题,因此,如果您能添加更多的细节,而不仅仅是“这是另一种方式”,那就太好了。如果它比以前的任何一个答案都好,你能解释一下原因吗?同时请格式化你的答案。使用适当的字体大小,适当使用粗体,并将代码放入代码块,而此代码可能会回答问题,提供有关此代码回答问题的原因和/或方式的附加上下文,从而提高其长期价值。