0

ここで苦労していますが、おそらく単純な構文の問題であることはわかっています。この変数をコード チャンクに渡し、正しく認識させる方法がわかりません。

$user = "Some.Person"

これは期待どおりに機能します。

get-aduser -filter {(Samaccountname -eq $user)}

これはしません

get-aduser -filter {(userprincipalname -like $user*)}

"$user*"のバリエーションや"'$user*'"他のいくつかのバリエーションで試してみましたが、役に立ちませんでした。

UPN が UserName とは異なる AD アカウントがあり、アクティブなアカウントにまだ存在することを確認する必要がある Username 形式の値のリスト全体があるため、最終的な結果は次のように使用されます。

Get-ADUser -Filter {(UserPrincipalName -like "$user*") -or (SamAccountName -eq "$user")} -SearchBase "" -Server "MyServer:3268"
4

1 に答える 1

1

奇妙な振る舞い、これは答えではなく、ターンアラウンドです。個人的に、私は使用します-LDAPFilter

Get-ADUser -LDAPFilter "(userprincipalname=$user*)"

フィルターの洗練された表記法は、最初は少し当惑しますが、ここでは、基盤となるプロトコル LDAP を使用してフィルタリングする自然な方法です。

Get-ADUser -LDAPFilter "(|(userprincipalname=$user*)(samAccountName=$user))"

この構文の詳細については、Search Filter Syntaxを参照してください。また、 About_ActiveDirectory_Filterで対応するフィルターを取得することもできます。


本当に構文を使用したい場合-Filterは、次のようにすることができます (私はそれを誇りに思っていません)。

$userstar = "$user*"
Get-ADUser -Filter {(userprincipalname -like $userstar) -or (samAccountName -like $user)}
于 2013-10-04T03:36:33.347 に答える