使用Powershell将arraylist行更改为列
在使用arraylist之后,我正在尝试更改arraylist的格式 组对象 统计列表中的所有条目 这是一个样本使用Powershell将arraylist行更改为列,powershell,Powershell,在使用arraylist之后,我正在尝试更改arraylist的格式 组对象 统计列表中的所有条目 这是一个样本 $list = [System.Collections.ArrayList]@() $list = "letter","solo","nap","nap","nap","sharp","ignite","tap","tap","tap","tap","evoke" $list | Group-Object | select name,count 这是示例输出 Name
$list = [System.Collections.ArrayList]@()
$list = "letter","solo","nap","nap","nap","sharp","ignite","tap","tap","tap","tap","evoke"
$list | Group-Object | select name,count
这是示例输出
Name Count
---- -----
letter 1
solo 1
nap 3
sharp 1
ignite 1
tap 4
evoke 1
我想要的是
letter solo nap sharp ignite tap evoke
-------- ----- ---- ---- ----- ------ ----
1 1 3 4 1 4 1
然后,当导出到excel时,其格式如下
我所尝试的一切似乎都没有得到回报,甚至没有接近我正在尝试做的事情,我认为我错过了一些明显的东西,或者已经达到了我的PowerShell技能极限。有人能帮忙吗。谢谢您跳过
组对象
——而是使用字典跟踪计数,然后将整个字典强制转换为自定义对象:
$properties = [ordered]@{}
$list |ForEach-Object {
$properties[$_]++
}
$counts = [pscustomobject]$properties
$counts
现在将保存一个类似于您所描述的对象,格式如下表所示:
PS C:\> $counts |Format-Table
letter solo nap sharp ignite tap evoke
------ ---- --- ----- ------ --- -----
1 1 3 1 1 4 1
您可以尝试以下方法:
$list = [System.Collections.ArrayList]@()
$list = "letter","solo","nap","nap","nap","sharp","ignite","tap","tap","tap","tap","evoke"
$group = $list | Group-Object | select name,count
$a = [PSCustomObject]@{}
foreach ($item in $group) {
$a | Add-Member -NotePropertyName $item.name -NotePropertyValue $item.count
}
$a | ft
您可以创建一个,使用将属性添加到其中,然后使用以下内容将输出格式化为表格:
输出:
evoke ignite letter nap sharp solo tap
----- ------ ------ --- ----- ---- ---
1 1 1 3 1 1 4
一种解决方案是将其放入
PsObject
中,然后将该对象导出到CSV中:
$list = [System.Collections.ArrayList]@()
$list = "letter","solo","nap","nap","nap","sharp","ignite","tap","tap","tap","tap","evoke"
$hash = $list | Group-Object | select name,count
$object = New-Object psobject
foreach( $item in $hash ) {
$column_name = $item.Name
$row_value = $item.Count
$object | Add-Member -MemberType NoteProperty -Name $column_name -Value $row_value
}
$object | Export-csv 'Path to your CSV' -NoTypeInformation
在过去的几天里,你两次帮助我——我对你感激不尽。一个简单易懂的脚本,完全符合我的要求。
$list = [System.Collections.ArrayList]@()
$list = "letter","solo","nap","nap","nap","sharp","ignite","tap","tap","tap","tap","evoke"
$hash = $list | Group-Object | select name,count
$object = New-Object psobject
foreach( $item in $hash ) {
$column_name = $item.Name
$row_value = $item.Count
$object | Add-Member -MemberType NoteProperty -Name $column_name -Value $row_value
}
$object | Export-csv 'Path to your CSV' -NoTypeInformation