2017-05-12 11 views
0

Active Directoryから別のユーザに対して検証するためにユーザのリストを取得していますが、2番目のユーザにはGet-ADUserという問題があります。最初のユーザー(ユーザーの集まり)はかなりシンプルで、うまく機能します。私は、より複雑なアプローチをしようとしているか、それが働いていないので、少なくとも私はもっと複雑としてそれを知覚しています第二のユーザ(単一インスタンスこの時間)でローカル変数を使用したLDAPフィルタリングを使用したADユーザの取得

$users += Get-ADUser -SearchBase "OU=Level2,OU=Level1,DC=domain,DC=org" -Filter "SamAccountName -like '*lvl'" -ResultSetSize 5000 -Properties $properties | Select $properties; 

:私はそうのような最初のユーザーを取得します。次のようなアプローチは次のとおりです。

$compareUser = Get-ADUser -SearchBase "OU=Level1,DC=domain,DC=org" -LDAPFilter {"(&(Surname=*$lastName*)(GivenName=*$firstName*))"} -ResultSetSize 1 -Properties $properties | Select $properties; 

私は何をフィルタリングするために、この場合$firstname$lastNameに、変数を使用しているとの問題を抱えています。

$firstNameおよび$lastNameは、最初のユーザーから派生し、その姓と名でADの他のユーザーを確認するために使用されています。うまくいけば、これを発行するためのより多くのコンテキストを提供するには、これがすべて行われる機能があります。

Function ComparingUserAccounts([System.Array]$users, $exceptions = @()){ 
    $notes = ""; 
    $invalidUsers = @(); 

    Foreach($user in $users){ 
     $firstName = $user.GivenName; 
     $lastName = $user.Surname; 
     $compareUser = Get-ADUser -SearchBase "OU=Level1,DC=domain,DC=org" -LDAPFilter {"(&(Surname=*$lastName*)(GivenName=*$firstName*))"} -ResultSetSize 1 -Properties $properties | Select $properties; 
     if(($nonAdminUser.SamAccountName -eq "") -or ($nonAdminUser.SamAccountName -eq $null)){ 
      if(($nonAdminUser.Surname -ne $user.Surname) -and ($nonAdminUser.GivenName -ne $user.GivenName)){ 
       if(-Not ($exceptions.Contains($user.SamAccountName))){ 
        $invalidUsers += $user.SamAccountName; 
       } 
      } 
     } 
    } 
    if($invalidUsers.Count -gt 0){ 
     $notes += $invalidUsers.Count + " users found without that name." 
    } 

    return $notes 
} 

私は、私の評価は常に "として、すべてのユーザーを返すように動作していないようでした、私がしかし、変数の周り*を置くべきであると述べたLDAPフィルターで変数を使用する方法については、オンライン見ていました違う"。ユーザーが自分の認証に合格しなかった場合、ユーザー名は$invalidUsersコレクションに追加されます。私がすべてのユーザーが「間違っている」と言うと、ほとんどのユーザーがそこにいてはいけないという事実を知っていると、それらはすべてそのコレクションに追加されます。

を検索フィルタは私の質問は、

ある要するに

を認識することはできません。言及する価値があるかもしれないもう一つは、私は、フィルタの周り{ }が含まれていない場合、私は買ってあげるということです

ADフィルタを使用してADユーザーを取得するにはどうすればよいですか?

答えて

1

LDAPプロパティは、Active Directoryプロパティとは異なる名前です。あなたのLDAPフィルタとしてこれを使用してみてください:

"(&(sn=*$lastName*)(GivenName=*$firstName*))" 

あなたはまた、あなたのフィルターの周りから{}を削除する必要があります。

https://www.manageengine.com/products/ad-manager/help/csv-import-management/active-directory-ldap-attributes.html

+0

さてあなたはおそらく正しいので、私は、LDAPのプロパティを変更しているが、私の検証はまだすべてが間違っていると言っています... – BlueBarren

関連する問題