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

このQ&Aのポイント
  • Windows2003Serverで構築したActiveDirectoryにおいて、1000以上のアカウントに対してパスワードを一括登録する方法を探しています。
  • マイクロソフトのスクリプトセンターで見つけたWSHを使用した方法が簡単そうです。ただし、スクリプトの1行化は初心者のため難しく感じます。具体的には、「_」の部分でエラーが発生しています。
  • EXCELで作成したデータをBATファイルで実行するため、複数行のスクリプトは避けたいと考えています。ご教授いただけると幸いです。
回答を見る
  • ベストアンサー

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で実行したいので 複数行になるのはまずいのです。ご教授よろしくお願いします。

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

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

GetObjectの後の _ は途中で改行する場合に必要なだけで、改行しない場合には必要ありません。 ちなみにパスワードの設定程度ならWSHを使わなくてもnet userコマンドでも充分です。

iwa111
質問者

お礼

ご回答ありがとうございます。 「_」を抜いて2行にして実行できました。 しかし、以下のように1行にすると「最後のステートメントが不正です」というエラーが返ってきます。 何が悪いのでしょうか? (↓表示上は1行になりませんが、1行と思ってください) Set objUser = GetObject("LDAP://cn=MyerKen,ou=management,dc=fabrikam,dc=com") objUser.SetPassword "i5A2sj*!" 記述が足りなかったですが、現在登録済みのアカウントに対して パスワードを登録(変更)しようとしています。「net user」でできましたでしょうか?

その他の回答 (1)

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

Set objUser = GetObject("LDAP://cn=MyerKen,ou=management,dc=fabrikam,dc=com") と objUser.SetPassword "i5A2sj*!" は異なる命令です。 BATを例にすると2つのコマンドを発行しているのと同じことです。 なので、複数の命令を区切るための識別子を入れる必要があります。 : (コロン) で区切ってつなげてみてください。

関連するQ&A

  • WSHでテキストファイルの値を代入

    WSHについての質問です。 環境はwindows2003サーバです。 初歩的な質問かと思いますが・・・ マイクロソフトのサイトで、 WSHでユーザアカウントを作成するサンプルが ありまして、 http://www.microsoft.com/japan/technet/scriptcenter/scripts/ad/users/manage/usmgvb05.mspx (以下スクリプト) Set objOU = GetObject("LDAP://OU=management,dc=fabrikam,dc=com") Set objUser = objOU.Create("User", "cn=MyerKen") objUser.Put "sAMAccountName", "myerken" objUser.SetInfo これで1人分のアカウントを作成できるわけですが、 他のテキストファイルに複数のユーザの情報を記入し、 それを自動的に連続して読み込んで、 複数ユーザを一気に作成するには、 どのようなコードを書けばよいでしょうか。 用意するテキストファイルは下記のようなものです。 OU名,ユーザ名 newou,user1 newou,user2 newou1,user101 ・   ・ ・   ・ ・   ・ (任意の値が入ります) スクリプトの、ユーザ情報の部分をカスタマイズして テキストの1行目から代入して、 それを繰り返すコードにすればよいのでしょうが、 わかりません・・・ ヒントだけでも助かります。どうかよろしくお願いいたします。

  • このサイトのコードを利用したいです。

    http://gallery.technet.microsoft.com/scriptcenter/d73b2ae1-2997-4952-8946-18dea79ba827 「Set objUser = GetObject("LDAP://cn=ken myer, ou=Finance, dc=fabrikam, dc=com") Wscript.Echo objUser.WhenCreated」 知らないユーザーアカウントがあったため、作成日を知りたいと思ったところ上記のサイトの上記のコードにたどり着きました。しかし私にはこのコードの使い方が分かりません。どなたか使い方を教えてください。

  • LDAPの区切り文字。

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

  • ActiveDirectoryのユーザー取得

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

  • お世話になります。

    お世話になります。 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点よろしくお願い致します。

  • スクリプトの拡張子を教えてください

    http://www.microsoft.com/japan/technet/scriptcenter/resources/qanda/feb08/hey0201.mspx 「サウンドをサウンド イベントにランダムに割り当てる方法はありますか」MSN SCriputing Guy!より 上のスクリプトを作成したいのですが、メモ帳で作成していいのでしょうか? その場合は保存の拡張子は何になりますか? あるいは、サイトにあるソフトでダウンロードしてスクリプトを作成するべきでしょうか? http://www.microsoft.com/japan/technet/scriptcenter/tools/default.mspx このサイトにはいくつかソフトがありますが、どれでもいいのでしょうか? スクリプトは初心者なので、見当がつきません。 教えてください。

  • WSHにて戻りオブジェクトのプロパティ全取得方法

    http://gallery.technet.microsoft.com/scriptcenter/07a8a60d-fef5-4729-87fe-3c7cee10267e を参考に、ローカルのユーザー情報を抜こうと思っております。 <内容> strComputer = "atl-fs-01" Set colAccounts = GetObject("WinNT://" & strComputer & "") colAccounts.Filter = Array("user") For Each objUser In colAccounts Wscript.Echo objUser.Name Wscript.Echo objUser.FullName Wscript.Echo Description Wscript 実行すると正しく動きました。 1. GetObjectで対象のコンピューターからのオブジェクトを生成 2.フィルターにより、ユーザー情報のみ抽出? 3. objUser.Name、 objUser.FullName objUser.Description を表示という内容までは理解できるのですが、 このobjUserに「FullName」と「Description」以外のプロパティを知りたいのです。 どうにかして、「objUser」が所持する「FullName」と「Description」以外のプロパティ一覧を全表示させることは出来ないでしょうか? ご教授お願いします。

  • 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) よろしくお願い致します。

  • VBSについて教えてください。

    VBSについて教えてください。 イベントビューワのプロパティの変更(最大ログサイズとログサイズが最大値に達した時の操作)を以下のスクリプトにて変更したいと思っています。(スクリプトはhttp://www.microsoft.com/japan/technet/scriptcenter/scripts/logs/eventlog/lgevvb16.mspxで公開されているのを利用しています。) strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate,(Security)}!\\" & _ strComputer & "\root\cimv2") Set colLogFiles = objWMIService.ExecQuery _ ("Select * from Win32_NTEventLogFile") For each objLogfile in colLogFiles strLogFileName = objLogfile.Name Set wmiSWbemObject = GetObject _ ("winmgmts:{impersonationLevel=Impersonate}!\\.\root\cimv2:" _ & "Win32_NTEventlogFile.Name='" & strLogFileName & "'") wmiSWbemObject.MaxFileSize = 1024000 wmiSWbemObject.OverwriteOutdated = 0 wmiSWbemObject.Put_ Next WindowsXPSP2では動作したのですが、Windows2000SP4では以下のエラーが発生します。 Windows Script Host スクリプト:スクリプトの場所 行:14 文字:5 エラー:WBEM_FLAG_USE_AMENDED_QUALIFIERSが指定されていない場合は修正オブジェクトを置くことはできません コード:80041066 ソース:SWbemObject VBSについては全く理解できておりません。 Windows2000で動作させるためにんはどこを修正すればいいでしょうか?

  • ExcelにADのセキュリティグループのメンバーを表示させる

    Visual Basicが全くわかっていないので、どなたか教えてください。 前任者が、OutlookのセキュリティグループのメンバーをExcelに表示させるVBSを残していきました。 とても便利に使っていましたが、ADのセキュリティグループに1500以上のユーザーが登録されているのに、 どういうわけか1500件までしか表示されません。どうやったらセキュリティグループのメンバー全員を吐き出すことができるんでしょうか? Dim objGroup, objExcel, iRow, strUser Set objGroup = GetObject("LDAP://cn=[セキュリティグループ名],ou=Distribution Groups,ou=XXXXX,dc=[domain]…") Set objExcel = CreateObject("Excel.Application") With objExcel .SheetsInNewWorkbook = 1 .Workbooks.Add .Visible = True .Worksheets.Item(1).Name = mid(objGroup.Name, instr(1,objGroup.Name,"=") + 1 ) 'set Worksheet name to that of the DL irow=1 For Each strUser in objGroup.Member Set objUser = GetObject("LDAP://" & strUser) .Cells(iRow,1) = objUser.CN irow=irow + 1 Next .Cells(iRow,1) = "Total users: " & irow - 1 .Columns(1).entirecolumn.autofit End With Set objExcel = Nothing Set objGroup = Nothing よろしくお願いいたします。