2009-06-28 5 views
0

ADドメインに多数のユーザーを追加する必要がありますが、手動で入力する必要はありません。私はパスワードを追加したいのでCSVDEを使いたくないのです。私はtechrepublicからインターネット上でVBScriptを書く背景があまりありません。問題は、スクリプトを実行したときに予想されるループエラーが発生し、csvファイルのユーザーが追加されないことです。私がvbsファイルの最後にループラインを投げれば、それはユーザーを作成しますが、明らかにスクリプトを再度実行しようとしているので、アカウントが既に存在するというエラーが表示されます。 誰でもこのスクリプトを正しく実行するために何を変更する必要があるかについての洞察を持っていますか?VBScriptのループエラーにより、csv経由でADにユーザーを追加する際にループエラーが発生する

' --------------------------------------------------- 

'スクリプト:createusersfromcsv.vbs ' 著者:スコット・ロウ '入力:レイアウトlogonnameとCSVファイル、姓、ファーストネーム、パスワード ' 日付:2005年12月21日 '変更ログ: ' いいえ変更 '----------------------------------------------- -----

ます。Option Explicit

薄暗いsCSVFileLocation 薄暗いsCSVFile 点心oConnection 薄暗いoRecordSet 薄暗いoNewUser

CSVファイルからの情報のインポートのための変数を保持 薄暗いsLogon 薄暗いsFirstName 薄暗いsLastName 薄暗いsDisplayName 点心 '変数は、LDAP接続のために 薄暗いoRootLDAP 薄暗いoContainer

が必要' sPassword Dim nPwdLastSet Dim nUserAccountControl 'アカウントを有効にするために使用します。 Dim sDomain

入力ファイルの場所 sCSVFileLocation = 'あなたの会社のADドメイン sDomain = "mydomain.com" を

一致させるために、これを変更' "C:\スクリプト\"「最後のスラッシュKEEP!コマンドは、CSVファイルを開くと、レコード セットoConnection =のCreateObject( "ADODB.Connectionの")のすべてを選択するために使用

'は、入力ファイルのフルパス sCSVFile = sCSVFileLocation & "Book2.csv"

' セットoRecordSet =のCreateObject( "ADODB.Recordsetの") oConnection.open "プロバイダ= Microsoft.Jet.OLEDB.4.0;データソース=" & sCSVFileLocation & ";拡張プロパティ=" "テキスト; HDR = NO; FMT =区切り"" "" oRecordSet.open "SELECT * FROM" & sCSVFile、oConnection

'Active Directoryユーザーコンテナへの接続を作成します。 設定oRootLDAP =のGetObject( "LDAP://でrootDSE") 設定oContainer =のGetObject( "LDAP:// CNは、ユーザー=" & _ oRootLDAP.Get( "defaultNamingContext"))

は 'に処理できるようにしますエラーが発生しても続行します(つまりDUPユーザー) は「私たちは、CSVの下にこれを入れて、処理が できるので、AD情報」に問題がある場合ではなく、単一の悪い記録を継続 「CSVファイルまたはADエラー再開に接続

do oRecordSet.EOF 'sInputFileファイルの値(セル)を読み込みます。

「---------ユーザアカウント の作成を開始します」 をCSVファイルから変数情報を読む 'とアカウント sLogon = oRecordSet.Fields.Item(0).VALUEを作成するために必要なすべてのものを構築 sFirstName = oRecordSet.Fields.Item(1).VALUE sLastName = oRecordSet.Fields.Item(2).VALUE sDisplayName = sLastName & "" & sFirstName sPassword = oRecordSet.Fields.Item(3)

を.VALUE

'ユーザーアカウントを作成する oNewUser = oContainer.Create( "User"、 "cn =" &のsAMAccountName "oNewUser.put & SLastName)

" sFirstName & ""、oNewUser.put LCASE(sLogon) "givenName属性"、oNewUser.put sFirstName "SN"、sLastName oNewUser.put "" UserPrincipalNameを、LCASE & sDomain "@"(sLogon)&は

、 "名前" oNewUser.put sDisplayName 、LCASE(sLogon) "表示名" oNewUser.put 'Active Directoryにこの情報を書くので、私たちは できる' パスワードを変更し、ユーザーアカウントを有効にする oNe wUser.SetInfo

に 'ユーザのパスワードを変更し oNewUser.SetPassword sPassword oNewUser.Put "pwdLastSet属性"、0

'、 "でuserAccountControl" oNewUser.Put

oNewUser.SetInfo 512 をユーザーアカウント を有効にします

Err.Numberに= -2147019886、その後

場合 '末端のMsgBox "ユーザーログオン" & sLogon &は を "既に存在する" '場合' のみ のデバッグに使用'

'---------ユーザーアカウントの作成終了

答えて

0

私はいくつかのGoogle検索の回答を見つけました。 oRecordSet.MoveNext ループ

そして、それは、働いていた:
は終わりに私が必要としていました。

関連する問題