CSV 形式のユーザーリストを元に、PowerShell を用い、Active Directory に複数のユーザーを一度に作成する方法を考えてみました。
なお、全ての操作は、ドメインコントローラー・メンバーサーバーともに Windows Server 2008 R2 SP1 の環境で行っています。
この作業のためには、PowerShell の3つの機能を組み合わせます。
[1] CSV 形式のファイルから、指定した位置 (列,行) の情報を読み込む。
[2] [1] で読み込んだ情報を使い、ドメインユーザーを作成する。
[3] CSV の最終行まで、[1],[2] の作業を順番に繰り返す。
第一回の今回は、[1] について記述します。(次回はいったん [3] に飛び、最後に [2] をやる予定です。)
まず、作成する 3 ユーザーの名前とパスワードのリスト「samplelist.csv」を、下記のように記述します。
※ 先頭行はフィールド名のため、全 4 行となります。
--------<ココカラ>--------
name,password
aaa,bbb
123,456
大畑,fk-01g
--------<ココマデ>--------
PowerShell で CSV ファイルを読み込む場合、import-csv コマンドレットを用います。
CSV ファイルがカレントディレクトリにある場合は、" import-csv samplelist.csv " です。
しかし・・・
CSV ファイルを日本語版 Windows の「メモ帳」で作成していた場合、保存時の文字コードは既定で Shift-JIS であるため、PowerShell 上では「大畑」の二文字が文字化けしてしまいます。
この現象は、ファイルを保存する際に文字コードとして Unicode を選択することで回避可能です。
あるいは、 " get-content samplelist.csv > unicode.csv " といったコマンドレットにより、Unicode 形式の別ファイルに変換することも可能です。
リストの中身全体を正しく読み込めたところで、次は列と行を指定して特定のデータを読み取ります。
まず、リスト全体を読み込むコマンドレットを、変数「$L」として扱えるようにします。
" $L = import-csv samplelist.csv "
こうすることで、" $L " を実行するだけでリストの中身を読み込めるようになります。
それから、name 列 のデータ部 1 行目、つまり「aaa」だけを抽出します。
これは " ($L[0]).name " で出来ます。
どうやら、データ部の 1 行目を、PowerShell 的には「0」行目として扱っているようなので、" ($L[1]).name " だと、結果は「123」になってしまいます。
大畑氏のパスワードを表示するには、" ($L[2]).password " です。
続く