1

最初に、私はスクリプト ライターではないので、これが初心者の質問のように聞こえる場合は申し訳ありません。

4 つのグループの少なくとも 1 つに属していない、特定の OU サブツリー内のすべてのユーザー アカウントを一覧表示する Powershell クエリを作成しようとしています。

私が知る限り、これを AD User オブジェクトで直接クエリすることはできないため、グループを反復処理してメンバーシップを取得する必要がありますが、複数のグループでこれを行う方法については明確ではありません。

すべてのユーザーを見つけて一時的なグループに追加し、他の 4 つのグループのいずれかに属している場合は削除できるスクリプトをまとめましたが、これは恐ろしい方法のように思えます。より良い解決策。

これが私が現在持っているものです(笑わないでください):-(

Import-Module ActiveDirectory
$groupname = "TempGroup"
$excludegroup1 = "Group1"
$excludegroup2 = "Group2"
$excludegroup2 = "Group4"
$excludegroup2 = "Group4"
$users = Get-ADUser -Filter * -SearchBase "ou=xxx,dc=xxx,dc=xxx" -SearchScope Subtree
foreach($user in $users)
{
  Add-ADGroupMember -Identity $groupname -Member $user.samaccountname -ErrorAction SilentlyContinue
}
$members = Get-ADGroupMember -Identity $groupname
$excludemembers = Get-ADGroupMember -Identity $excludegroup1
foreach($member in $excludemembers)
{
 Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname
}
$members = Get-ADGroupMember -Identity $groupname
$excludemembers = Get-ADGroupMember -Identity $excludegroup2
foreach($member in $excludemembers)
{
 Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname
}
$members = Get-ADGroupMember -Identity $groupname
$excludemembers = Get-ADGroupMember -Identity $excludegroup3
foreach($member in $excludemembers)
{
 Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname
}
$members = Get-ADGroupMember -Identity $groupname
$excludemembers = Get-ADGroupMember -Identity $excludegroup4
foreach($member in $excludemembers)
{
 Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname
}

すべての助けがありがたく受け入れました。

4

2 に答える 2

0

誰かが興味を持っている場合、これは私が今持っているコードです。実行ごとにフラッシュするグループを使用します。これは、ユーザーをダブルクリックするだけでオブジェクトにアクセスし、欠落しているグループに追加できるためです。

Import-Module ActiveDirectory
$groupname = "NotInGroups"
$members = Get-ADGroupMember -Identity $groupname
foreach($member in $members)
{
 Remove-ADGroupMember -Identity $groupname -Member $member.samaccountname
}
$users = Get-ADUser -Filter {((memberof -notlike "CN=Group1,DC=domain,DC=local") -AND (memberof -notlike "CN=Group2,DC=domain,DC=local") -AND (memberof -notlike "CN=Group3,DC=domain,DC=local") -AND (memberof -notlike "CN=Group4,DC=domain,DC=local"))} -SearchBase "ou=users,dc=domin,dc=local" -SearchScope Subtree
foreach($user in $users)
{
  Add-ADGroupMember -Identity $groupname -Member $user.samaccountname -ErrorAction SilentlyContinue
} 
于 2013-09-16T01:42:03.300 に答える