扩展 powershell cmdlet 组对象

扩展 powershell cmdlet 组对象

我在使用 cmdlet 时遇到问题Group-Object。例如:

PS C:\Windows> get-service | Group-Object -Property status

        Count Name      Group           
        ----- ----      -----   
        114 Running   {AdobeARMservice, Appinfo, AppMgmt...}
        128 Stopped   {AdobeFlashPlayerUpdateSvc, AJRouter...}

看看组列如何不显示所有名称,而是用省略号截断它们。我知道我可以Select-Object -expandproperty group在之后通过管道传递 cmdlet 来获取完整列表,但这只会输出组列,而不会输出计数和名称列。我知道我也可以替换 group-object 并只使用format-table -wrap来扩展包含其他列的列表,但我需要计数列,如果没有 ,它就不会显示Group-Object

有人知道在使用时如何做到这一点吗Group-Object?这不仅适用于,get-service还适用于我使用的其他东西group-objectGet-service只是一个任何人都可以理解的通用示例。谢谢。

答案1

好吧,就像我在评论中说的那样,您对输出的处理Group-Object完全取决于具体情况。但这里有一个如何查看所有服务名称的示例。

Get-Service | Group-Object -Property Status |
Select-Object Count, Name, @{Name="Services";Expression={$_.Group.Name -join ','}} |
Format-Table -Wrap

Count Name    Services
----- ----    --------
  108 Running AdaptiveSleepService,AMD External Events Utility,AppIDSvc,Appinfo,Apple Mobile Device
              Service,AudioEndpointBuilder,Audiosrv,BDESVC,BFE,BITS,Bonjour Service,BrokerInfrastructure,CDPSvc,
  132 Stopped AJRouter,ALG,AppMgmt,AppReadiness,AppVClient,AppXSvc,AxInstSV,Browser,BthHFSrv,bthserv,ClipSVC,COMSysApp,
              CscService,DcpSvc,defragsvc,DeviceInstall,DevQueryBroker,diagnosticshub.standardcollector.service,DmEnrol,

答案2

这对我有用。

$FormatEnumerationLimit=-1
Get-Service | Group-Object -Property Status | ft -Wrap

相关内容