本記事では、Active Directory(AD)アクションを使用して、ドメインユーザー一覧を取得したのちに、各ユーザーがAD上のどのグループに属しているかを出力するサンプルを紹介します。
なお、Active Directoryアクションは、以下の条件を満たさなければ稼働しませんのでご留意ください。
・AutoMateを稼働させるPCがドメインに属しており、かつドメインユーザーでAutoMateが実行されていること
・認証情報に指定したドメインユーザーが、操作対象に対して必要十分な権限を保有していること
(特に、「削除」は「フル コントロール」でなければ稼働しない場合があります)
本サンプルは、以下の流れで処理を実行します。
1. ドメイン管理者として実行し、ユーザー一覧をデータセットに取得
2. 1のデータセットをもとにして、ユーザーの属性「memberOf」を取得する
3. 2の結果取得された結果を変数に格納する。なお、どの組織/グループにも属していない場合エラーになるので、エラーになった場合は次のステップに進み「所属なし」をセットする
4. 取得結果一覧を、テキストファイルに出力するか、ダイアログに出力するかをユーザーに選択させる。なお、結果が30レコードを超えている場合は、ファイル出力を推奨するメッセージを追加する。
以下、サンプルです。
<AMSHOWDIALOG MESSAGE="このタスクは、実行する端末が対象のドメインに入っていなければ稼働しません。" COUNTDOWNDELAY="5" /> <AMVARIABLE NAME="var_ADAdminUser" VALUE="automatedemo" DESCRIPTION="Active Directoryの管理者権限をもったユーザー" /> <AMVARIABLE NAME="var_ADAdminPass" VALUE="AAAaaa000" DESCRIPTION="Active Directoryの管理者ユーザーパスワード" /> <AMVARIABLE NAME="var_Domain" VALUE="amdemo" DESCRIPTION="ドメイン名" /> <AMVARIABLE NAME="var_ListOfMembers" VALUE="名前 所属組織" DESCRIPTION="メンバーのリストと所属するグループ一覧" /> <AMVARIABLE NAME="var_MemberOf" VALUE="" /> <AMVARIABLE NAME="var_IsFileOutput" VALUE="1" DESCRIPTION="出力結果をファイルに出すかダイアログに出すかを選択" /> <!--以下、認証情報には上で定義したドメイン管理者情報を使用している。ただし、ドメイン管理者でログオンしてこのタスクを実行するなら、認証情報は「Default」でよく、上記の認証情報の設定は必要ない。--> <!--「Users」配下のメンバー取得--> <AMACTIVEDIRECTORY ACTIVITY="list_object_path" AUTHTYPE="None" USERNAME="%var_ADAdminUser%" LDAPPATH="LDAP://CN=Users,DC=%var_Domain%,DC=local" FILTER="*" RESULTDATASET="ds_ADUsers" PASSWORD="AM5K/9dDUOSshiql9JlIHXq4Ygp/IEOarRRqp82KloDDd4=aME" /> <!--「Users」配下のメンバー全員について、所属するADグループの一覧を取得する--> <AMLOOP ACTIVITY="dataset" DATASET="ds_ADUsers" /> <!--該当するユーザーがどこのメンバーもなかった場合はエラーになるので、エラーを無視して次に進む--> <AMACTIVEDIRECTORY ACTIVITY="get_object_property" AM_ONERROR="CONTINUE" AUTHTYPE="None" USERNAME="%var_ADAdminUser%" PASSWORD="AM5nyOaG1q3nI4oFstFR6oTPEE1jvqY+aVouo3NvtVY33I=aME" LDAPPATH="%ds_ADUsers.Path%" PROPERTYNAME="memberOf" ADOBJECT="user" RESULTVARIABLE="var_MemberOf" /> <!--どこかに属していた場合はそのグループを、どこにも属していない(=エラーになる)場合は、「所属なし」とする--> <AMIF ACTIVITY="last_step" /> <AMVARIABLE ACTIVITY="set" VARIABLENAME="var_ListOfMembers">%var_ListOfMembers & vbCrLf & ds_ADUsers.Name & vbTab & var_MemberOf%</AMVARIABLE> <AMELSE /> <AMVARIABLE ACTIVITY="set" VARIABLENAME="var_ListOfMembers">%var_ListOfMembers & vbCrLf & ds_ADUsers.Name & vbTab & "所属なし"%</AMVARIABLE> <AMIF ACTIVITY="end" /> <AMLOOP ACTIVITY="end" /> <!--結果をファイル出力するか、ダイアログ出力するかをユーザーに選択させる 結果が30行以上の場合は、ファイル出力を推奨するメッセージを出す--> <AMSHOWDIALOG ACTIVITY="select" MESSAGETEXT="結果出力形式を選択してください。%vbCrLf%ファイル出力の場合、結果はデスクトップに「ADユーザーリスト.txt」として保存されます。%if(ds_ADUsers.TotalRows >= 30, vbCrLf & "※※30行以上あるため、ファイル出力を推奨します※※", "")%" RESULTVARIABLE="var_IsFileOutput" ITEMS="ファイル出力,ダイアログ出力" VALUES="1,0" INDEXSELECTED="1" WINDOWTITLE="出力形式の選択" COUNTDOWNDELAY="30" /> <AMIF EXPRESSION="%var_IsFileOutput% = 1" /> <AMFILESYSTEM ACTIVITY="write_file" FILE="%GetDesktopDirectory()%\ADユーザーリスト.txt" APPEND="no">%var_ListOfMembers%</AMFILESYSTEM> <AMSHOWDIALOG WINDOWTITLE="アイテムを選択してください。" COUNTDOWNDELAY="10">「%GetDesktopDirectory()%\ADユーザーリスト.txt」に結果を出力しました。 ご確認ください。</AMSHOWDIALOG> <AMELSE /> <AMSHOWDIALOG>結果は以下の通りです。 ------------------------------------------------------- %var_ListOfMembers%</AMSHOWDIALOG> <AMIF ACTIVITY="end" />