微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 oneliner 中删除 ConvertFrom-StringData 之后的重复项

如何解决在 oneliner 中删除 ConvertFrom-StringData 之后的重复项

例如,我有这个衬里:

get-process | select id,processname | %{$_.processname +"="+ $_.id} | ConvertFrom-StringData

返回每个进程及其 id 的键值对。 我的目标是删除任何具有重复名称的进程,并只留下其中一个(例如,我想只留下一个 svchost 条目),在一个班轮中。 似乎没有什么对我有用,而且我不确定 ConvertFrom-StringData 是正确的方向,并且不明白它如何成功地将其转换为具有重复键的哈希表。

解决方法

如果您希望获得每个进程一次但仍保留对 ID 的引用,您可以在 ProcessName 上使用 Group-Object,然后从中创建包含您想要的内容的自定义对象。

Get-Process | Group-Object ProcessName | ForEach-Object {
    [pscustomobject]@{
        ProcessName = $_.Name
        IDs         = $_.Group.Id
    } }

输出

ProcessName                                                                  IDs
-----------                                                                  ---
acumbrellaagent                                                             7288
aesm_service                                                               17512
ApplicationFrameHost                                                       16704
armsvc                                                                      5240
assystResetService                                                          5232
atmgr                                                                      18984
audiodg                                                                    15216
Calculator                                                                  6128
CamMute                                                                     5616
CcmExec                                                                     5252
chrome                                               {3348,3848,4196,4416...}
,

或者来自@Daniel 的有用回答,如果您不担心 ID,您可以使用 -Unique 中可用的 Select-Object 开关,以及我将在中使用的 Sort-Object这个例子。

Get-Process | Foreach-Object -Process {
    [PSCustomObject]@{
        Name = $_.Name 
        ID   = $_.Id
    } 
} | Sort-Object -Property Name -Unique

喜欢吧?嗯,是的,但没有必要。这仍然可以通过选择属性并通过管道对其进行排序来完成:

Get-Process  | Sort-Object -Property Name -Unique | Select-Object -Property Name,ID

还有 Get-Unique 会给你类似的结果。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。