2

これが単純なことである場合は事前にお詫び申し上げますが、数日間調査しており、自分で解決したり、探索する別のルートを見つけることができません.

基本的に、私は以下のものを持っています。これは機能し、必要なものを正確に返します:

([adsisearcher]'(&(objectClass=user (samaccountname='*dland*'))').FindOne().Properties['samaccountname']    

dland を含むユーザー名を返します。dlandを変数 ($usrNme1)に置き換えたいのですが、「Unexpected token '$usrNme1'))'' in expression or statement.」というエラーが発生します。

以下を使用して ActiveDirectory モジュールを使用して、ローカルで動作させることができました。

Get-ADUser -Filter {SAMAccountName -like $usrNme1} | select-object -Property SAMAccountName    

しかし、残念ながら、この環境の他のコンピューターに対してそれを使用することはできず、別の方法を見つける必要があります。これは、代替品を見つけることができる限りです.

ここでの支援は大歓迎です:)これは私にとってパズルの最後のピースであり、非常に近くにあり、それを理解できないことにイライラしています! お時間を割いていただきありがとうございます:)

編集: コメントするのを忘れました。このスクリプトはプッシュされ、Windows 7 マシンでローカルに実行されます。これが、Get-ADUser を使用できない理由の 1 つです。

ありがとう、

デビッド

4

2 に答える 2

1

クエリの後に角かっこがないため、クエリの形式が少し正しくありませuserんが、次の例のように文字列に変数を簡単に配置できます。二重引用符内に配置された変数は問題なく展開されます* (ほとんどの場合、オブジェクト パラメータには部分式が必要です)。

$accountname = "mcame*"
$query = "(&(objectClass=user)(samaccountname=$accountname))"
([adsisearcher]$query).FindOne().Properties['samaccountname']

注:この質問を見ると、ワイルドカード検索を行う際に問題が発生することがわかります。大規模な組織の場合は、先頭と末尾のアスタリスクまたは複数形の使用を再検討する必要があるかもしれません。

あなたの元のクエリ

括弧は別として、それが機能しなかった理由は、単一引用符を使用していたためです。このリソースを見ると、次のように続きます

比較文字列は引用符で囲みません。displayName 'Philipp Foeckeler' のフィルターは次のようになります: (displayName=Philipp Foeckeler)。

クエリは、これらの内側の引用符がなくても機能するはずです。

于 2014-12-23T16:43:27.333 に答える