• ベストアンサー

ActiveDirectoryのユーザー取得

GetObject("LDAP://OU=ABC,DC=XXX,DC=local") でOU毎のユーザーは取得できるのですが、 OUを指定せずに、全てのユーザーを取得する方法はないでしょうか? (複数のOUが作成されているので、指定したくない) ネットで検索しても「CNorOU」を指定しない方法が見つけられませんでした。 OUの一覧を取得して、複数回ループするしかないのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • FudaKeji
  • ベストアンサー率73% (58/79)
回答No.1

方法は問わないのでしょうか?例にあるようにVBScriptからならループするのが一般的だと思います。 コマンドを使っても良いのであれば「adminpack」をインストールしてdsqueryを使うのも良いかと。 adminpack は Win2000,Win2003サーバのの%SystemRoot%\system32\adminpack.msi です。 dsquery user -name * と実行するとドメインのユーザーDNが全て取得できます。

matsu5664
質問者

お礼

早速の回答、ありがとうございます。 VBSを想定しているのでループが一般的なのですね。 現在はループするような処理で動作させています。

関連するQ&A

  • ActiveDirectoryで高い層のOUを指定する

    以下のように多階層でOrganizational Unitが作成されています。 ou1 - ou1-1    - ou1-2    - ou1-3 - ou1-3-1 ou2 - ou2-1    - ou2-2 ou3 - ou3-1 - ou3-1-1 この状態で、ou1-1 に所属するユーザー情報を取得したいのですが、その方法がわかりません。 LDAP://xxxxx.xxx/OU=ou1-1,dc=xxxxx,dc=xxx と指定すると、以下のエラーが出てしまいます。 System.DirectoryServices.DirectoryServicesCOMException: サーバーにそのようなオブジェクトはありません。 LDAP://xxxxx.xxx/OU=ou1,dc=xxxxx,dc=xxx と指定すればユーザー情報は取得できますが、1-1だけでなく、1-2,1-3のユーザー情報も一緒に取れてしまいます。 1-1のユーザーだけを指定するにはどうすればいいのでしょうか?

  • LDAP認証について

    お世話になっております。 この質問がこのカテゴリであっているか自身がありませんが、実行プログラムがASPなため、このカテゴリに質問させて頂きます。 LDAP認証をする場合、OUがない、ActiveDirectoryは、OUに何を指定すればいいのでしょうか?「Users」でいいのでしょうか? 以下プログラム strLdapPath="LDAP://xxx.xxx.xxx.xxx/CN=123,OU=???,DC=xxx,DC=xxx" strUserID="123" strPassword="****" Set obj = objLdap.OpenDSObject(strLdapPath, strUserID, strPassword, 0) よろしくお願い致します。

  • お世話になります。

    お世話になります。 ActiveDirectoryについての質問です。 Server:WindowsServer2003 R2 全ユーザーアカウントの作成日付を取得し、指定場所へ出力したい。 (1)以下のプログラムでは全ユーザーアカウントを対象にすることができません。 全ユーザーアカウントを対象とするにはどのように記述すればよいでしょうか。 ▼プログラム Set objUser = GetObject("LDAP://cn=userName,ou=Kanri,ou=jsystem,dc=domain,dc=co,dc=jp") Wscript.Echo objUser.WhenCreated (2)保存場所の指定方法及び、ファイル形式を指定して、保存するにはどのように記述すればよいで  しょうか。 以上、2点よろしくお願い致します。

  • ActiveDirectoryのユーザー一括登録

    Win2008r2でADを構築し、ユーザー情報の抜出(export)、一括登録(import)を csvdeコマンドで練習しております。 C:>csvde -u -f export.csv -r objectCategory=user コマンドにより、なんとかCSV形式で、ADに登録されている情報を抜き出すことはできました。 ecportしたファイルを基にしてimport用データーを作成したのですが、上手く行かない状態です。 登録するユーザー ⇒user03とuser04 import.csvの中身↓↓ N,objectClass,cn,name,userAccountControl,sAMAccountName,sn,displayName,userPrincipalName "CN=user03,OU=Test-OU,DC=test,DC=local",user,user03,user03,512,user03,user03,user03,user03@test.local "CN=user04,OU=Test-OU,DC=test,DC=local",user,user04,user04,512,user04,user04,user04,user04@test.local import.csvを実行すると。 C:>csvde -i -f import.csv "(null)" に接続しています SSPI を使って現在のユーザーとしてログインしています ファイル "import.csv" からディレクトリをインポートしています 入力ファイルを開くときにエラーがありました 0 個のエントリを正しく修正しました。 プログラムでエラーが発生しました ログはファイルに書き込まれませんでした。ログ ファイルを生成するには、 -j オプションを使ってログ ファイルへのパスを指定してください。 という状態になってしまいます。 以下のサイトを参照して行っています。 http://itpro.nikkeibp.co.jp/article/COLUMN/20080125/292017/ どなたかご教授下さい。

  • LDAP-OS認証 グループによる制限

    LDAP認証の設定がされているLinuxサーバ(CentOS 5.1)へログインする 際に、特定のグループに所属しているユーザのみ許可するにはどうすれ ばよいのでしょうか? ・grp1のldif dn: cn=grp1,ou=Group,ou=People,dc=abc,dc=jp objectClass: posixGroup cn: grp1 gidNumber: 603 memberUid: user1 memberUid: user3 ユーザはuser1、user2、user3の3人がLDAPへ登録されています。 現在は3人ともログインできてしまう。 user1、user3のみログインできるようにしたい。 /etc/ldap.conf のpam_groupdnおよびpam_member_attributeを修正して みましたが挙動は変わりません。 pam_groupdn cn=grp1,ou=Group,ou=People,dc=abc,dc=jp pam_member_attribute memberUid どなたかお知恵をお貸しください。

  • Active DirectoryユーザのADSIを使ったセキュリティグループの取得

    いつもお世話になります。 ADSIをつかってActive Directoryに登録されている1人のユーザから 登録されているセキュリティグループ一覧を取得する方法がわかる方 がおりましたらご教授頂きたく質問させて頂きました。 環境はWindows2000+ACCESS2000VBAです。 ちなみに何となくこんな感じというコードを書きます。 Dim objUser As IADsUser Set objUser = GetObject("'LDAP://' & 'CN='ユーザ名,' & 'CN=Users,' & 'DC=***,' & 'DC=co,' & 'DC=jp'") For Each ここがわかりません。 Next 別の方法でADOを使ったコードでも取得できそうですが、Where句のスキーマがわかりません。 下記のコードで登録ユーザのメールの一覧が取得できました。 Set Con = CreateObject("ADODB.Connection") Set Com = CreateObject("ADODB.Command") Con.Provider = "ADsDSOObject" Con.Open "Active Directory Provider" Set Com.ActiveConnection = Con Com.CommandText = "select name,mail from 'LDAP://DC=***, DC=co, DC=jp' WHERE " _ & "objectCategory='Person' " _ & "AND objectClass = 'user' " Set RS = Com.Execute While Not RS.EOF Debug.Print RS.Fields("Name") & " , " & RS.Fields("mail") RS.MoveNext Wend このSQLコマンドを select S_GROUP from *** where USER_ID に替えたいのです。 どちらかで結構なのでお願い致します。

  • ActiveDirectoryにおけるパスワード一括登録

    Windows2003Serverで構築したActiveDirectoryにおいて、1000以上のアカウントに対してパスワードを一括登録したいと思っています。 色々検索した結果、マイクロソフトのスクリプトセンターで見つけたWSHで実施するのが簡単そうです。 http://www.microsoft.com/japan/technet/scriptcenter/scripts/ad/users/pwds/uspwvb01.mspx そこにあったサンプルは以下で、3行になっています。 Set objUser = GetObject _ ("LDAP://cn=MyerKen,ou=management,dc=fabrikam,dc=com") objUser.SetPassword "i5A2sj*!" WSHのことは初心者のため、初歩的な質問で恐縮ですが、 上記スクリプトを1行で記述したいのですが、「_」のところでエラーになってしまいます。 どのように変更したらいいのでしょうか? 1000以上のデータをEXCLEで作成しBATで実行したいので 複数行になるのはまずいのです。ご教授よろしくお願いします。

  • LDAPの区切り文字。

    WSHでLDAPを使用したいのですが、うまくいきません。 CN名(姓,名)にカンマが含まれているのでオブジェクトの取得に失敗します。どのように記述したらいいのでしょうか? LDAPの区切り文字をカンマ以外の区切り文字に変えたりできるのでしょうか? Set objUser = GetObject("LDAP://cn=LASTNAME, FirstName" & ", ou=Test, dc=Test")

  • VBSであるAD情報を取得したいです!

    すいません教えて下さい。 ADにOUが複数あります。 OU一覧を取得するにはどのようにすれば良いでしょうか? 色々やり方はあると思いますが、出来るだけ簡単な方法で実現したいです。 よろしくお願いします。

  • ActiveDirectoryから値を取得

    VB2005にて、ActiveDirectoryから値を取得するアプリを作成しています。 WindowsXPでは問題なく動作するのですが、Windows7だと「ローカルエラーが発生しました」 というエラーメッセージが返って来てしまいます。 OSの設定を変えれば解決するのか、プログラムの書き方を変えるのか分からないので、 こちらに質問させていただきました。以下がプログラムです。 どなたかご存知の方がいらっしゃいましたら教えて下さい。 宜しくお願いします。 Try Dim serverPath As String = "LDAP://ドメコンのIPアドレス/DC=XXXXX,DC=co,DC=jp" Dim userName As String = "CN=ユーザー名,CN=Users,DC=XXXXX,DC=co,DC=jp" Dim password As String = "パスワード" Dim entry As New System.DirectoryServices.DirectoryEntry(serverPath, userName, password) Dim lgUser As String Dim intPos As Integer '「,」の位置 lgUser = ユーザーID Dim search As New System.DirectoryServices.DirectorySearcher() '検索のルートになるDirectoryEntryを指定 search.SearchRoot = entry '検索条件を指定します。下ではアカウント名と変数lgUserの一致が条件 search.Filter = "(samAccountName=" + lgUser + ")" Dim result As System.DirectoryServices.SearchResult Dim strA As String '↓ココでエラーになります。 result = search.FindOne Dim counter As Integer For counter = 0 To (result.Properties("memberOf").Count) - 1 'resultで抽出したアカウントがメンバとして含まれるグループを取得 Dim groupName As String = CStr(result.Properties("memberOf")(counter)) strA = strA & groupName & vbCrLf intPos = groupName.IndexOf(",") '「,」の位置を取得 User_Group.Add(groupName.Substring(3, intPos - 3)) Next counter SetUser_Group = True Catch ex As Exception MessageBox.Show(ex.Message, "ActiveDirectoryからの取得", MessageBoxButtons.OK, MessageBoxIcon.Error) End Try