1

私は初心者なので、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

上記の出力は次のとおりです。

"ComputerName","DomainName","Manufacturer" "1myComputerName","2myComputerDomain","3myComputerManufacturer"

.... 今、私はこれを望んでいません。出力を列形式で表示したい、つまり

"ComputerName","1myComputerName"
"DomainName","2myComputerDomain"
"Manufacturer","3myComputerManufacturer"

これを実現するには、どのようなコード変更を行う必要があります。?

4

2 に答える 2

1

次のようなことを試すことができます:

$InventoryReport | Format-List ComputerName, DomainName, Manufacturer `
  | Out-String -Stream `
  | ? { $_ -ne '' } `
  | % { $_ -replace '\s+:\s+', '","' -replace '(^|$)', '"' }
于 2013-05-21T17:17:08.293 に答える
1

既に持っている CSV が必要か、カスタム txt ファイルが必要です。後者が必要な場合は、これを試してください:

$comp = gwmi win32_computersystem

@"
"ComputerName","$($comp.Name)"
"DomainName","$($comp.Domain)"
"Manufacturer","$($comp.Manufacturer)"
"@ | Out-File test.txt

以下の test.txt 出力のサンプル。私は非ドメインのカスタム ビルド PC を持っているので、値について心配する必要はありません。

"ComputerName","GRAIMER-PC"
"DomainName","WORKGROUP"
"Manufacturer","System manufacturer"

EDIT CSVとは何かを学ぶことをお勧めします。CSV はファイル形式ではなく、通常のテキスト ファイルで使用される書式設定スタイルです。拡張子は、.csvテキストファイルが csv スタイルを使用していることを人々に知らせるための表面的なものです。ウィキペディアTechnetをチェックしてください

CSV ファイルでは、各オブジェクトはオブジェクトのプロパティ値のコンマ区切りリストで表されます。プロパティ値は (オブジェクトの ToString() メソッドを使用して) 文字列に変換されるため、通常はプロパティ値の名前で表されます。Export-CSV は、オブジェクトのメソッドをエクスポートしません。

エクスポートされるファイルの形式は次のとおりです。

-- CSV ファイルの最初の行には、文字列 '#TYPE ' が含まれ、その後に #TYPE System.Diagnostics.Process などのオブジェクトの完全修飾名が続きます。この行を非表示にするには、NoTypeInformation パラメーターを使用します。

- CSV ファイルの次の行は、列ヘッダーを表します。これには、最初のオブジェクトのすべてのプロパティの名前のコンマ区切りリストが含まれています。

--ファイルの追加行は、各オブジェクトのプロパティ値のコンマ区切りリストで構成されます。

于 2013-05-21T09:43:29.717 に答える