gpt4 book ai didi

powershell - 导出到csv的Powershell数组显示System.Object []

转载 作者:行者123 更新时间:2023-12-03 00:46:56 24 4
gpt4 key购买 nike

有一个仅影响export-csv输出的简单问题,out-gridview和结果到控制台都很好。希望通过“句柄”捕获一组服务器上的前5个进程。

代码如下:

$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

通过控制台显示出来的结果看起来很好,如下所示
 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}...}

...但是,在csv中它们显示如下:
Server  Top5
Server1 System.Object[]
Server2 System.Object[]
Server3 System.Object[]

我认为这是因为$ Top5变量是一个服务器具有多个属性(每个属性5个)的变量。如何纠正代码,以便export-csv显示实际值?

任何帮助表示赞赏!

我希望csv结果看起来像GRIDVIEW中显示的以下内容

enter image description here

根据BenH的建议,回顾Powershell传奇人物Boe Prox的帖子,我现在可以进行以下工作:
 $Top5 = Get-Process -Computer $Item | Sort Handles -descending |Select -expand Handles | |Select -First 5 
$new = [pscustomobject]@{ Top5 = (@($Top5) -join ',')
}

现在就可以正常工作了:

我想添加更多的格式,其中Top5Processes现在在(括号)中使用了实际的CPU%,我有以下输出内容
 Top2Proc                            Top2CPU                  
services.exe,BESClient.exe 32.76,16.6

但是,如果我可以将上述两个值合并为一个,那将是更好的输出方式,因此如下所示:
 Top2Proc
Services(32.76), BesClient.exe(16.6)

知道怎么做吗?

最佳答案

使用Select-Object将过程对象转换为字符串,然后再将它们输送到Export-Csv:

$OutArray |Select-Object Server,@{Expression={$_.Top5.Name -join ';'}} |Export-Csv test.csv

关于powershell - 导出到csv的Powershell数组显示System.Object [],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42444571/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com