メンバーを見るに、FindOneを使うのが正解?
[void][reflection.assembly]::LoadWithPartialName("System.DirectoryServices") [void][reflection.assembly]::LoadWithPartialName("System.DirectoryServices.AccountManagement") function Get-Group($context, $groupName) { <# 任意のコンテキストに含まれる任意のグループオブジェクトを返します。 対象のオブジェクトを1件でも取得できた場合は、いずれかを返します。 対象のオブジェクトの取得が 0 件の場合は、 null を返します。 $context 取得元となるコンテキスト $groupName 取得元となるグループ名 #> $filter = New-Object System.DirectoryServices.AccountManagement.GroupPrincipal($context) $filter.Name = $groupName $searcher = New-Object System.DirectoryServices.AccountManagement.PrincipalSearcher($filter) $result = $searcher.FindOne() $searcher.Dispose() return $result } # テスト用コード $context = New-Object System.DirectoryServices.AccountManagement.PrincipalContext([System.DirectoryServices.AccountManagement.ContextType]::Machine) Get-Group $context "Administrators"
以下のような結果が返ってきます。
IsSecurityGroup : True GroupScope : Local Members : {Administrator, sample...} Context : System.DirectoryServices.AccountManagement.PrincipalContext ContextType : Machine Description : コンピューター/ドメインに完全なアクセス権があります。 DisplayName : SamAccountName : Administrators UserPrincipalName : Guid : DistinguishedName : StructuralObjectClass : Name : Administrators
ここで、Membersを参照すると、Administrators権限を持つユーザーを取得できます。