2013-05-21 26 views
1

因爲我是初學者,所以我沒有太多的動手參與powershell編程。雖然 我有一個腳本開發用於將數據從數組插入到csv文件如下:在PowerShell中 - 以自定義格式將對象導出爲文本文件

#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" 

變動應做什麼代碼來實現這一點。 ?

回答

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樣式。檢查出WikipediaTechnet

在CSV文件,各對象由逗號分隔的列表中的對象的屬性值的 表示。屬性值是 轉換爲字符串(通過使用對象的ToString()方法), ,因此它們通常由屬性值的名稱表示。 導出CSV不會導出對象的方法。

導出文件的格式如下:

- CSV文件的第一行包含字符串「#TYPE」後跟對象的完全合格的名稱,如#TYPE 系統.Diagnostics.Process。要抑制此行,請使用 NoTypeInformation參數。

- CSV文件的下一行代表列標題。它包含一個逗號分隔的第一個對象的所有屬性的名稱列表 。

- 該文件的其他行由逗號分隔的每個對象的屬性值列表組成。

+0

嗨Graimer, 該解決方案看起來非常staright前進。 但我正在尋找和export-csv用於以列方式創建csv文件。 – Ambrish

+1

@Graimer向你提供了你所要求的。它是名稱/值對,每行一個,用逗號分隔,並在文本週圍加引號。 – alroc

+0

@Ambrish我不想粗魯,但你沒有聽話。 CSV的格式是每個對象一行,屬性/列由分隔符分隔(逗號爲默認值)。我已經從wikipedia和technet的'export-csv'的文檔中添加了一些鏈接和引用。 –

0

你可以嘗試這樣的事:

$InventoryReport | Format-List ComputerName, DomainName, Manufacturer ` 
    | Out-String -Stream ` 
    | ? { $_ -ne '' } ` 
    | % { $_ -replace '\s+:\s+', '","' -replace '(^|$)', '"' } 
相關問題