zoukankan      html  css  js  c++  java
  • 在Powershell中使用Group-Object和-GroupBy

    使用Group-Object(group)按组统计

    1 PS C:> Get-Command -Module Microsoft.PowerShell.LocalAccounts | group Noun
    2 
    3 Count Name              Group                                                                                                                     
    4 ----- ----              -----                                                                                                                     
    5     3 LocalGroupMember  {Add-LocalGroupMember, Get-LocalGroupMember, Remove-LocalGroupMember}                                                     
    6     7 LocalUser         {Disable-LocalUser, Enable-LocalUser, Get-LocalUser, New-LocalUser, Remove-LocalUser, Rename-LocalUser, Set-LocalUser}    
    7     5 LocalGroup        {Get-LocalGroup, New-LocalGroup, Remove-LocalGroup, Rename-LocalGroup, Set-LocalGroup}   

    对统计的结果进行排序,注意:以下两个语句是等效的

     1 PS C:> Get-Command -Module Microsoft.PowerShell.LocalAccounts | sort Noun | group Noun
     2 
     3 Count Name              Group                                                                                                                     
     4 ----- ----              -----                                                                                                                     
     5     5 LocalGroup        {Get-LocalGroup, New-LocalGroup, Remove-LocalGroup, Rename-LocalGroup, Set-LocalGroup}                                    
     6     3 LocalGroupMember  {Add-LocalGroupMember, Get-LocalGroupMember, Remove-LocalGroupMember}                                                     
     7     7 LocalUser         {Disable-LocalUser, Enable-LocalUser, Get-LocalUser, New-LocalUser, Remove-LocalUser, Rename-LocalUser, Set-LocalUser}    
     8 
     9 
    10 
    11 PS C:> Get-Command -Module Microsoft.PowerShell.LocalAccounts | group Noun | sort Name 
    12 
    13 Count Name              Group                                                                                                                     
    14 ----- ----              -----                                                                                                                     
    15     5 LocalGroup        {Get-LocalGroup, New-LocalGroup, Remove-LocalGroup, Rename-LocalGroup, Set-LocalGroup}                                    
    16     3 LocalGroupMember  {Add-LocalGroupMember, Get-LocalGroupMember, Remove-LocalGroupMember}                                                     
    17     7 LocalUser         {Disable-LocalUser, Enable-LocalUser, Get-LocalUser, New-LocalUser, Remove-LocalUser, Rename-LocalUser, Set-LocalUser} 

    在Format-Table里使用-GroupBy按组显示结果,必须先对Groupby的字段进行排序,否则Groupby的字段不会显示在一起

     1 PS C:> Get-Command -Module Microsoft.PowerShell.LocalAccounts | sort Noun | ft -GroupBy Noun
     2 
     3 
     4    Noun: LocalGroup
     5 
     6 CommandType     Name                                               Version    Source                                                                      
     7 -----------     ----                                               -------    ------                                                                      
     8 Cmdlet          Get-LocalGroup                                     1.0.0.0    Microsoft.PowerShell.LocalAccounts                                          
     9 Cmdlet          New-LocalGroup                                     1.0.0.0    Microsoft.PowerShell.LocalAccounts                                          
    10 Cmdlet          Remove-LocalGroup                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts                                          
    11 Cmdlet          Rename-LocalGroup                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts                                          
    12 Cmdlet          Set-LocalGroup                                     1.0.0.0    Microsoft.PowerShell.LocalAccounts                                          
    13 
    14 
    15    Noun: LocalGroupMember
    16 
    17 CommandType     Name                                               Version    Source                                                                      
    18 -----------     ----                                               -------    ------                                                                      
    19 Cmdlet          Add-LocalGroupMember                               1.0.0.0    Microsoft.PowerShell.LocalAccounts                                          
    20 Cmdlet          Get-LocalGroupMember                               1.0.0.0    Microsoft.PowerShell.LocalAccounts                                          
    21 Cmdlet          Remove-LocalGroupMember                            1.0.0.0    Microsoft.PowerShell.LocalAccounts                                          
    22 
    23 
    24    Noun: LocalUser
    25 
    26 CommandType     Name                                               Version    Source                                                                      
    27 -----------     ----                                               -------    ------                                                                      
    28 Cmdlet          Disable-LocalUser                                  1.0.0.0    Microsoft.PowerShell.LocalAccounts                                          
    29 Cmdlet          Enable-LocalUser                                   1.0.0.0    Microsoft.PowerShell.LocalAccounts                                          
    30 Cmdlet          Get-LocalUser                                      1.0.0.0    Microsoft.PowerShell.LocalAccounts                                          
    31 Cmdlet          New-LocalUser                                      1.0.0.0    Microsoft.PowerShell.LocalAccounts                                          
    32 Cmdlet          Remove-LocalUser                                   1.0.0.0    Microsoft.PowerShell.LocalAccounts                                          
    33 Cmdlet          Rename-LocalUser                                   1.0.0.0    Microsoft.PowerShell.LocalAccounts                                          
    34 Cmdlet          Set-LocalUser                                      1.0.0.0    Microsoft.PowerShell.LocalAccounts   

    Format-Table处理以后,一般不能再进行"|"操作,否则会出错

     1 PS C:> Get-Command -Module Microsoft.PowerShell.LocalAccounts | ft -AutoSize
     2 
     3 CommandType Name                    Version Source                            
     4 ----------- ----                    ------- ------                            
     5 Cmdlet      Add-LocalGroupMember    1.0.0.0 Microsoft.PowerShell.LocalAccounts
     6 Cmdlet      Disable-LocalUser       1.0.0.0 Microsoft.PowerShell.LocalAccounts
     7 Cmdlet      Enable-LocalUser        1.0.0.0 Microsoft.PowerShell.LocalAccounts
     8 Cmdlet      Get-LocalGroup          1.0.0.0 Microsoft.PowerShell.LocalAccounts
     9 Cmdlet      Get-LocalGroupMember    1.0.0.0 Microsoft.PowerShell.LocalAccounts
    10 Cmdlet      Get-LocalUser           1.0.0.0 Microsoft.PowerShell.LocalAccounts
    11 Cmdlet      New-LocalGroup          1.0.0.0 Microsoft.PowerShell.LocalAccounts
    12 Cmdlet      New-LocalUser           1.0.0.0 Microsoft.PowerShell.LocalAccounts
    13 Cmdlet      Remove-LocalGroup       1.0.0.0 Microsoft.PowerShell.LocalAccounts
    14 Cmdlet      Remove-LocalGroupMember 1.0.0.0 Microsoft.PowerShell.LocalAccounts
    15 Cmdlet      Remove-LocalUser        1.0.0.0 Microsoft.PowerShell.LocalAccounts
    16 Cmdlet      Rename-LocalGroup       1.0.0.0 Microsoft.PowerShell.LocalAccounts
    17 Cmdlet      Rename-LocalUser        1.0.0.0 Microsoft.PowerShell.LocalAccounts
    18 Cmdlet      Set-LocalGroup          1.0.0.0 Microsoft.PowerShell.LocalAccounts
    19 Cmdlet      Set-LocalUser           1.0.0.0 Microsoft.PowerShell.LocalAccounts
    20 
    21 
    22 
    23 PS C:> Get-Command -Module Microsoft.PowerShell.LocalAccounts | ft -AutoSize | sort Name
    24 
    25 out-lineoutput : The object of type "Microsoft.PowerShell.Commands.Internal.Format.FormatEntryData" is not valid or not in the 
    26 correct sequence. This is likely caused by a user-specified "format-*" command which is conflicting with the default formatting
    27 .
    28     + CategoryInfo          : InvalidData: (:) [out-lineoutput], InvalidOperationException
    29     + FullyQualifiedErrorId : ConsoleLineOutputOutOfSequencePacket,Microsoft.PowerShell.Commands.OutLineOutputCommand

    有时候虽然能执行,但结果也和预期不符

     1 PS C:> Get-Command -Module Microsoft.PowerShell.LocalAccounts | ft -AutoSize | group Noun
     2 
     3 Count Name                      Group                                                                                          
     4 ----- ----                      -----                                                                                          
     5    19                           {Microsoft.PowerShell.Commands.Internal.Format.FormatStartData, Microsoft.PowerShell.Command...
     6 
     7 
     8 
     9 PS C:> $data = Get-Command -Module Microsoft.PowerShell.LocalAccounts | ft -AutoSize | group Noun
    10 
    11 PS C:> $data.Group
    12 
    13 CommandType Name                    Version Source                            
    14 ----------- ----                    ------- ------                            
    15 Cmdlet      Add-LocalGroupMember    1.0.0.0 Microsoft.PowerShell.LocalAccounts
    16 Cmdlet      Disable-LocalUser       1.0.0.0 Microsoft.PowerShell.LocalAccounts
    17 Cmdlet      Enable-LocalUser        1.0.0.0 Microsoft.PowerShell.LocalAccounts
    18 Cmdlet      Get-LocalGroup          1.0.0.0 Microsoft.PowerShell.LocalAccounts
    19 Cmdlet      Get-LocalGroupMember    1.0.0.0 Microsoft.PowerShell.LocalAccounts
    20 Cmdlet      Get-LocalUser           1.0.0.0 Microsoft.PowerShell.LocalAccounts
    21 Cmdlet      New-LocalGroup          1.0.0.0 Microsoft.PowerShell.LocalAccounts
    22 Cmdlet      New-LocalUser           1.0.0.0 Microsoft.PowerShell.LocalAccounts
    23 Cmdlet      Remove-LocalGroup       1.0.0.0 Microsoft.PowerShell.LocalAccounts
    24 Cmdlet      Remove-LocalGroupMember 1.0.0.0 Microsoft.PowerShell.LocalAccounts
    25 Cmdlet      Remove-LocalUser        1.0.0.0 Microsoft.PowerShell.LocalAccounts
    26 Cmdlet      Rename-LocalGroup       1.0.0.0 Microsoft.PowerShell.LocalAccounts
    27 Cmdlet      Rename-LocalUser        1.0.0.0 Microsoft.PowerShell.LocalAccounts
    28 Cmdlet      Set-LocalGroup          1.0.0.0 Microsoft.PowerShell.LocalAccounts
    29 Cmdlet      Set-LocalUser           1.0.0.0 Microsoft.PowerShell.LocalAccounts

    最后,Group-Object(group)这个cmdlet在Microsoft.PowerShell.Utility这个Module里,不在Microsoft.PowerShell.Core里

     1 PS C:> Get-Command *-Object* | sort Source | ft -AutoSize
     2 
     3 CommandType Name                 Version Source                      
     4 ----------- ----                 ------- ------                      
     5 Cmdlet      ForEach-Object       3.0.0.0 Microsoft.PowerShell.Core   
     6 Cmdlet      Where-Object         3.0.0.0 Microsoft.PowerShell.Core   
     7 Cmdlet      Compare-Object       3.1.0.0 Microsoft.PowerShell.Utility
     8 Cmdlet      Group-Object         3.1.0.0 Microsoft.PowerShell.Utility
     9 Cmdlet      Measure-Object       3.1.0.0 Microsoft.PowerShell.Utility
    10 Cmdlet      New-Object           3.1.0.0 Microsoft.PowerShell.Utility
    11 Cmdlet      Register-ObjectEvent 3.1.0.0 Microsoft.PowerShell.Utility
    12 Cmdlet      Select-Object        3.1.0.0 Microsoft.PowerShell.Utility
    13 Cmdlet      Sort-Object          3.1.0.0 Microsoft.PowerShell.Utility
    14 Cmdlet      Tee-Object           3.1.0.0 Microsoft.PowerShell.Utility
    15 
    16 
    17 
    18 PS C:> Alias | where DisplayName -like "*Object*" | select Definition, Name | sort Definition
    19 
    20 Definition       Name   
    21 ----------       ----   
    22 Compare-Object   compare
    23 Compare-Object   diff   
    24 ForEach-Object   %      
    25 ForEach-Object   foreach
    26 Get-WmiObject    gwmi   
    27 Group-Object     group  
    28 Measure-Object   measure
    29 Remove-WMIObject rwmi   
    30 Select-Object    select 
    31 Sort-Object      sort   
    32 Tee-Object       tee    
    33 Where-Object     ?      
    34 Where-Object     where  
  • 相关阅读:
    CodeForces 706C Hard problem
    CodeForces 706A Beru-taxi
    CodeForces 706B Interesting drink
    CodeForces 706E Working routine
    CodeForces 706D Vasiliy's Multiset
    CodeForces 703B Mishka and trip
    CodeForces 703C Chris and Road
    POJ 1835 宇航员
    HDU 4907 Task schedule
    HDU 4911 Inversion
  • 原文地址:https://www.cnblogs.com/makesense/p/11090978.html
Copyright © 2011-2022 走看看