DOSコマンド FOR/Fについての問題

このQ&Aのポイント
  • DOSコマンドFOR/Fを使用してアクティブディレクトリに一括でユーザーを登録する作業をしていますが、dsadd.batを実行させると最初の行のみを繰り返し読み込む問題が発生します。
  • dsadd.batにはFOR/Fを使用してtest.csvの各行を取得し、それぞれの値をDSADDコマンドに代入するコードが含まれています。
  • しかし、実行すると最初の行のみを繰り返し読み込む問題が発生しています。FOR/Fの文法に問題があるのか困っています。
回答を見る
  • ベストアンサー

DOSコマンド FOR/F について

DOSコマンド FOR/F について アクティブディレクトリにユーザーを一括で登録する作業をしています。 dsadd.batを作成しFOR/Fによりtest.csvの内容を取得して、その値をDSADDコマンドに代入することで一行づつユーザーを登録する方法を試しています。 dsadd.batの内容 @FOR /F "TOKENS=1-3 DELIMS=," %%a IN (test.csv) DO dsadd user CN=%%a,OU=testou,DC=test,DC=local -display %%a -samid %%b -upn %%b -pwd %%c -fn 太郎 -ln 登録 -u administrator -p password -d test.local test.csvの内容 1tttt,t_touroku,touroku123 2tttt,t_touroku,touroku123 3tttt,t_touroku,touroku123 ところがdsadd.batを実行させると以下のように1行目ばかりの読み込みを延々行います。 C:\adduser>dsadd user CN=1tttt,OU=testou,DC=test,DC=local -display 1tttt -samid t_touroku -upn t_touroku -pwd touroku123 -fn 太郎 -ln 登録 -u administrator -p password -d test.local C:\adduser>dsadd user CN=1tttt,OU=testou,DC=test,DC=local -display 1tttt -samid t_touroku -upn t_touroku -pwd touroku123 -fn 太郎 -ln 登録 -u administrator -p password -d test.local C:\adduser>dsadd user CN=1tttt,OU=testou,DC=test,DC=local -display 1tttt -samid t_touroku -upn t_touroku -pwd touroku123 -fn 太郎 -ln 登録 -u administrator -p password -d test.local FOR/Fの文法部分が駄目なのでしょうか? 困っています。 どなたかお知恵をいただきたく存じます。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10262)
回答No.1

バッチファイル名をdsadd.batにしているため、for ... do dsadd のところで、dsadd.exe じゃなくて dsadd.bat つまり自分自身が呼び出されてますので、無限ループのようになります(無条件の再帰呼び出し)。 バッチファイル名を変えましょう。

matupo
質問者

お礼

遅くなってすみません、解決しました。 有難う御座いました。

関連するQ&A

  • ldapaddコマンドでエラー

    OpenLDAPの設定をしているのですが、ldapaddコマンドで実行したら下記のエラーが表示されて、うまくいきません。色々、Googleで調べてやったのですが解決できなかったので、教えて頂けたら幸いです。 エラー解決で参考にしたURLhttp://arinux.jugem.jp/?eid=42 /usr/local/bin/ldapadd -f userlist.ldif -x -D "cn=Manager,dc=solaristest,dc=com " -W -h localhost Enter LDAP Password: adding new entry "cn=test,ou=People,dc=solaristest,dc=com" ldap_add: Invalid syntax (21) additional info: objectclass: value #1 invalid per syntax slapd.conf include /usr/local/etc/openldap/schema/core.schema include /usr/local/etc/openldap/schema/cosine.schema include /usr/local/etc/openldap/schema/inetorgperson.schema pidfile /usr/local/var/run/slapd.pid argsfile /usr/local/var/run/slapd.args # Load dynamic backend modules: modulepath /usr/local/libexec/openldap moduleload back_bdb.la database bdb suffix "dc=solaristest,dc=com" rootdn "cn=Manager,dc=solaristest,dc=com" rootpw {SSHA}XXXXXXXXXXXXXXXXXXXXX directory /usr/local/var/openldap-data index objectClass eq 基本データベース新規作成 base.ldif dn: dc=solaristest,dc=com objectClass: dcObject objectclass: organization dc: solaristest o: solaristest Corporation dn: cn=Manager, dc=solaristest,dc=com objectClass: organizationalRole cn:Manager dn: ou=People,dc=solaristest,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=solaristest,dc=com objectClass: organizationalUnit ou: Group /usr/local/bin/ldapadd -f base.ldif -x -D "cn=Manager,dc=solaristest,dc=com" -W -h localhost こちらは、エラーなく通っています。 既存ユーザ情報をLDAPサーバーへ登録 MigrationTools使用 migrate_common.phパラーメータの変更 $DEFAULT_MAIL_DOMAIN = "solaristest.com"; $DEFAULT_BASE = "dc=solaristest,dc=com" 一般ユーザ情報抽出 ./migrate_passwd.pl userlist > userlist.ldif userlist.ldif dn: cn=test,ou=People,dc=solaristest,dc=com uid: test cn: test objectclass: inetOrgPerson objectclass: posixAccount objectClass: top objectClass: shadowAccount userPassword:XXXXXXXXXXXXX shadowLastChange: 14575 loginShell: /bin/sh uidNumber: 100 gidNumber: 1 homeDirectory: /export/home/test 以上、よろしくお願いします。

  • WindowsバッチのCSV読み込みについて

    WindowsバッチにてCSVファイルのデーターの読み込みを行いたいと考えています。 CSVの中身(test.csv)------------------------------------- "CN=test1,CN=users,DC=testdomain,DC=local","test1","aaa" "CN=test2,CN=users,DC=testdomain,DC=local","test2","bbb" 上記の取り込み方として、以下のバッチを実行しようとした場合、求めている結果になりません。 for /f "delims=, usebackq tokens=1-3 usebackq" %%i in ("test.csv") do echo %%i, %%k ○求める結果 "CN=test1,CN=users,DC=testdomain,DC=local","aaa" "CN=test2,CN=users,DC=testdomain,DC=local","bbb" ○得られた結果 "CN=test1,CN=users,DC=testdomain "CN=test2,CN=users,DC=testdomain ""(ダブルコーテーション)で括ったものを、ひとつのカラムとして受け渡したすことはできないでしょうか。よろしくお願い致します。

  • 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/ どなたかご教授下さい。

  • dsmoveコマンドをBATファイルで実行したい

    数百回のdsmoveコマンドをBATファイルで一括処理したいのですが、 うまくいかず困っています。良い方法があれば教えてください。 コマンドは以下のような感じですが、コピペしてコマンドプロンプトから実行すると 正常に動作するので、コマンド自体は正しいはずです。 dsmove "CN=test1,OU=Office,OU=test,DC=test,DC=kaisya,DC=co,DC=jp" -newname "test001" dsmoveが、バッチからでは実行できないということは無いですよね?

  • PowerShellでCSVを文字列に組立る方法

    以下の内容のCSVファイルから「CN=test,OU=test_ou,DC=test,DC=domain」の結果を最小限のPowerShellで得るにはどのようにすればよろしいでしょうか? Name,OU,Domain test,test_ou,test.domain いろいろ試してみたのですが、きれいにこの形にできませんでした。 よろしくお願いいたします。

  • 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 どなたかお知恵をお貸しください。

  • Accessの文字切り出しについて

    AccessでActiveDirectoryデータを管理したいと考えておりますが、ADからcsvdeで出力した後、Accessにインポートしています。 が、"DN"フィールドに、分割管理したい項目がまとめて入っており、分割する為のクエリを作成したいと思いますが、文字の抽出方法が分かりません。 CN=日本語ユーザー名(可変長),OU=OU名(可変長),DC=下位ドメイン名,DC=上位ドメイン名,DC=local ◎下記項目を切り出し CN=〇〇〇 OU=〇〇〇 単純に、Left関数・Mid関数では切り出し出来ない為、コーディング方法をお教え頂けましたら幸いです。

  • ActiveDirectoryのユーザー取得

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

  • テスト環境でのsaveについて

    Ruby1.9.3とRails3.2.9でのテスト環境のモデルの単体テスト(unit)での質問です。 unitのuser_test.rb に下記の記述を書いて試験しているのですが、saveコマンドでのusersテーブル への書き込みが、下記でnewしたuserの内容ではなく、fixturesフォルダの下の、users.ymlのテストデータの内容が書き込まれるようなのですが、動作はそれでよいのでしょうか?また、YMLデータではなくて下記のデータを書き込ませるsaveの書き方とかはあるのでしょうか? test "user auth test" do user = User.new(:name => "tanaka", :password => "pass", :password_confirmation => "pass") user.save assert User.auth("tanaka", "pass") end 後、現在、usersテーブルのhashed_passwordフィールドに、モデル(user.rb)の中で、パスワードの セッターを再定義するために、 class User < ActiveRecord::Base   def password=(pwd)   @password = pwd    #   return if pwd.blank?   self.hashed_password = User.encrypt(@password)   end # 以下、省略 end の記述を入れているのですが、現在何故か、YMLのデータが暗号化されないでそのまま入力されてしまっていますま。このメソッドの呼び出しは、上に書いたusersテーブルの内容またはYMLデータの書き込み時に、実行されると思っていいのでしょうか?(両方、またはどちらか?) 御教示願えればと思います。

    • ベストアンサー
    • Ruby
  • 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) よろしくお願い致します。

専門家に質問してみよう