0

2 つのコード ブロックがあります。

$allUsers = Get-ADUser -Filter *
foreach($_ in $allUsers.Name){
    Write-Host "User $_ is member of the following groups:" -for Yellow
    Get-ADPrincipalGroupMembership -Identity $_ | select Name,objectClass,Groupscope,Groupcategory | sort Name | Format-Table
}
User Administrator is member of the following groups:

Name                 objectClass                  Groupscope       Groupcategory
----                 -----------                  ----------       -------------
Administrators       group                       DomainLocal            Security
Distributed COM U... group                       DomainLocal            Security
Domain Admins        group                            Global            Security
Domain Users         group                            Global            Security
Enterprise Admins    group                         Universal            Security
Group Policy Crea... group                            Global            Security
HelpLibraryUpdaters  group                       DomainLocal            Security
Schema Admins        group                         Universal            Security


User Guest is member of the following groups:

Name                 objectClass                  Groupscope       Groupcategory
----                 -----------                  ----------       -------------
Domain Guests        group                            Global            Security
Guests               group                       DomainLocal            Security

他のバージョンは次のようになります。

    $allUsers = Get-ADUser -Filter *
    foreach($_ in $allUsers.Name){
        Write-Host "User $_ is member of the following groups:"
        Get-ADPrincipalGroupMembership -Identity $_ | select Name,objectClass,Groupscope,Groupcategory | sort Name
    }

User Administrator is member of the following groups:

Name                 objectClass                  Groupscope       Groupcategory
----                 -----------                  ----------       -------------
Administrators       group                       DomainLocal            Security
Distributed COM U... group                       DomainLocal            Security
Domain Admins        group                            Global            Security
Domain Users         group                            Global            Security
Enterprise Admins    group                         Universal            Security
Group Policy Crea... group                            Global            Security
HelpLibraryUpdaters  group                       DomainLocal            Security
Schema Admins        group                         Universal            Security
User Guest is member of the following groups:
Domain Guests        group                            Global            Security
Guests               group                       DomainLocal            Security

私の意見では、後者の方が読みやすいです。私の質問はこれです。コードの最初のブロックに各ユーザーのヘッダーが表示されるのはなぜですか? 私の見方では、select-object は $allUsers.Name のすべてのユーザーに対して呼び出されるため、後者のヘッダーでも毎回ヘッダーを表示する必要がありますか?

4

1 に答える 1

0

違いは、呼び出される回数Format-Tableです。最初の例では、各ユーザーに対して呼び出されます。これは、ユーザーごとにヘッダーが出力されることを意味します。2 番目の例Format-Tableでは、1 回だけ呼び出されるため、ヘッダーは 1 回だけ出力されます。

2 番目のコマンドFormat-Tableの最後には暗黙の意味があるため、次のようにします。

$allUsers = Get-ADUser -Filter *
foreach($_ in $allUsers.Name){
    Write-Host "User $_ is member of the following groups:"
    Get-ADPrincipalGroupMembership -Identity $_ | select Name,objectClass,Groupscope,Groupcategory | sort Name
} | Format-Table 

同じ結果が得られるはずです。

于 2013-09-30T12:31:39.357 に答える