因为我是初学者,所以我对powershell编程没有多少动手。尽管如此 我开发了一个脚本,用于将数据从数组插入到csv文件中,如下所示:
#Following is the array
$InventoryReport = New-Object -TypeName PSobject -Property @{
ComputerName = "1myComputerName"
DomainName = "2myComputerDomain"
Manufacturer = "3myComputerManufacturer"
}
#Now to export the data to csv, i am using following:
$InventoryReport |Select-Object -Property ComputerName, DomainName, Manufacturer | Export-Csv -Path "c:\abc.csv" -NoTypeInformation -ErrorAction Stop
#This works fine
并且上面的输出是:
“计算机名”, “域名”, “制造商” “1myComputerName”, “2myComputerDomain”, “3myComputerManufacturer”
.... 现在,我不希望这样,我希望输出以柱状方式出现,即
"ComputerName","1myComputerName"
"DomainName","2myComputerDomain"
"Manufacturer","3myComputerManufacturer"
为实现这一目标,应该进行哪些代码更改。 ?
答案 0 :(得分:1)
您想要CSV,您已经拥有,或者您想要一个自定义的txt文件。如果你想要后者,试试这个:
$comp = gwmi win32_computersystem
@"
"ComputerName","$($comp.Name)"
"DomainName","$($comp.Domain)"
"Manufacturer","$($comp.Manufacturer)"
"@ | Out-File test.txt
下面的test.txt输出示例。我有一个非域名,定制的电脑,所以不要担心这些价值。
"ComputerName","GRAIMER-PC"
"DomainName","WORKGROUP"
"Manufacturer","System manufacturer"
编辑我建议您了解CSV是什么。请记住,CSV不是文件格式,它是普通文本文件中使用的格式化样式。 .csv
扩展只是让人们知道文本文件使用csv样式的装饰。查看Wikipedia和Technet
在CSV文件中,每个对象由逗号分隔的列表表示 对象的属性值。属性值是 转换为字符串(通过使用对象的ToString()方法), 所以它们通常用属性值的名称表示。 Export-CSV不会导出对象的方法。
导出文件的格式如下:
- CSV文件的第一行包含字符串' #TYPE'后跟对象的完全限定名称,例如#TYPE 的System.Diagnostics.Process。要禁止此行,请使用 NoTypeInformation参数。
- CSV文件的下一行代表列标题。它包含逗号分隔的所有属性名称列表 第一个对象。
- 该文件的其他行包含每个对象的属性值的逗号分隔列表。
答案 1 :(得分:0)
您可以尝试这样的事情:
$InventoryReport | Format-List ComputerName, DomainName, Manufacturer `
| Out-String -Stream `
| ? { $_ -ne '' } `
| % { $_ -replace '\s+:\s+', '","' -replace '(^|$)', '"' }