export-csvの出力、アウトグリッドビュー、およびコンソールへの結果にのみ影響する簡単な問題はあります。一連のサーバー上で「処理」することで上位5つのプロセスをキャプチャします。Powershell Array to export-csv shows System.Object []
次のようにコードがある:
$Servers = "Server1", "Server2", "Server3"
$OutArray = @()
ForEach ($Item in $Servers)
$Top5 = Get-Process -Computer $Item | Sort Handles -descending |Select -First 5
$OutArray += New-Object PSObject -property @ {
Server = $Item
Top5 = $Top5
} #OutArray
} #ForEach
$OutArray | Export-csv Test.csv
次のように彼らはCSV表示で、しかし...
Server Top5
------ ----
SERVER1 {@{ProcessName=svchost.exe; PercentCpuLoad=13.79}, @{ProcessName=services.exe; PercentCpuLoad=11.4}, @{ProcessName=WmiPrvSE.exe; PercentCpuLoad=10.03}, @{ProcessName=irfilcol.exe; PercentCpuLoad=9.79}...}
を次のようにコンソールを介して、細かい探して出てくるその結果:
Server Top5
Server1 System.Object[]
Server2 System.Object[]
Server3 System.Object[]
$ Top5変数が1つのserに対して複数のプロパティ(それぞれ5個)を持つ変数であると考えていますver。 export-csvに実際の値が表示されるように、コードを修正するにはどうすればよいですか?
ありがとうございました!
私はCSV結果は、それがPowerShellの伝説英中銀のProxからの投稿を閲覧するBenHからの提案を使用してGridViewの
にを示しています、次のようになりたいと思い、私は今、次の作業があります。
$Top5 = Get-Process -Computer $Item | Sort Handles -descending |Select -expand Handles | |Select -First 5
$new = [pscustomobject]@{ Top5 = (@($Top5) -join ',')
}
ちょうど約今、この作業を得た:
私はformattinのより多くの部分を追加したいですTop5Processesは(カッコ)で使用される実際のCPU%を持っているグラムは、今、私は私が上記の二つを組み合わせることができれば、それは、出力ごとに良くなり、
Top2Proc Top2CPU
services.exe,BESClient.exe 32.76,16.6
ただし、出力のために、以下の持っています値は1になりますので、次のようになります。
Top2Proc
Services(32.76), BesClient.exe(16.6)
どのようにしたらよいでしょうか?
PowerShellは、そのデータとそれができる最善を尽くしています。そのオブジェクトをその "セル"内の文字列としてどのように表現するかはわかりません。あなたは何をすべきかを伝える必要があります。現時点では、出力のために期待していることは表示されません。 CSVは文字列で区切られたデータの集合です。そのデータ構造を保持したい場合は、JSONまたはXMLなどを使用する必要があります。 – Matt
投稿が更新され、out-gridview経由で表示されるスクリーンショットが表示されます。これは '私がCSV – Kenny
この[Boe Proxのブログ記事](https://learn-powershell.net/2014/01/24/avoiding-system-object-or-similar-output-when-using-export-csv/)が役立ちます問題を説明してください。注:下のスクリプトセンターリンクが壊れています。スクリプトは[his GitHub](https://github.com/proxb/PowerShell_Scripts)にあります – BenH