如何正确格式化 Group-object 的输出

How to format correctly the output from Group-object

我正在为我们的一位客户开发脚本,他们正在使用一些需要在终端服务器上关闭的会计应用程序,以便不时更新应用程序。

我想出了一个脚本,它会询问用户想要做什么,然后向他展示正确的输出,问题是,我的输出看起来像一个哈希表,但我不知道如何正确分组输出并按进程名称组织它

这是部分代码:

$apps = Get-Process CpaPlus,ShklMnNT,HonProj,hisMain,hazharon -IncludeUserName

$apps|Group-Object ProcessName

输出看起来像这样:

----- ----                      -----                                                                                                                                             
    4 CpaPlus                   {@{UserName=bla\user; ProcessName=CpaPlus}, @{UserName=bla\user; ProcessName=CpaPlus}, @{UserName=bla\user; ProcessName=CpaP...
    2 hisMain                   {@{UserName=bla\user; ProcessName=hisMain}, @{UserName=bla\user; ProcessName=hisMain}}                                             

无效输出:

count  processname   user
----   ----------    ---
4       cpaplus      michael 

非常感谢您的帮助。

如果您想在 ProcessNameUserName 上分组,您必须告诉 Group-Object 两者都做:

$ProcessByUser = $apps |Group-Object ProcessName,UserName

然后我们可以使用 Select-Object 从现有对象之一获取相关属性:

$ProcessByUser |Select-Object Count,@{Name='ProcessName';Expression={$_.Groups[0].ProcessName}},@{Name='UserName';Expression={$_.Groups[0].UserName}}