Windows PowerShell用Active Directory モジュールの概要

こんにちは、ウィンドウズ開発統括部のサーバー担当、Aaronです。

Server 2008 R2の新機能の一つは役割別のPowershell Applets です。Active Directory やRemote Desktop Server (以前Terminal Server)やServer Manager (サーバー管理ツール)のApplets があります。

この記事はActive Directory Powershell の概要となります。

最初はServer 2008 R2のActive Directory をインストールする必要あります。「初期構成タスク」からでも「サーバーマネージャ」からでも「役割の追加」を選択して、「Active Directory ドメイン サービス」を選択して、インストールしてください。役割がインストールされたら、dcpromo.exe を実行する必要があります。これServer 2008 とあまり変わりません。

Active Directory ドメインのインストールが終わったら、管理すること方法、いろいろがあります。昔のままのMMC の「Active Directory ユーザーとコンピューター」でも可能です。cmd.exeのdsadd.exe やdsquery.exe のコマンドラインツールも残っています。でもServer 2008 R2 にてPowershellのActive Directory のApplet も追加しています。最後にそのActive Directory用PowerShellを使っている「Active Directory 管理センター」もあります。(次のブログで説明する予定です)

私はPowershellの新しい統合スクリプト環境 (Integrated Scripting Environment – ISE)を使うのが好きなので教えてあげます。使う前に「サーバー マネージャー」の「機能」からインストールする必要があります。

スタート¥アクセサリ¥Windows PowerShell¥Windows PowerShell V2 ISE を起動してください。(普通のPowershellでも、「管理ツール」にある「Windows PowerShell 用Active Directory モジュール」でも大丈夫です。PowerShell ISEだとUnicode対応なので、英語のOS からでも日本語の入力を手間がかかりません。

「Windows PowerShell 用Active Directory モジュール」じゃない場合、最初にActive Directory のApplet達をロードする必要があります。(「Windows PowerShell 用Active Directory モジュール」だと自動的にロードされます)

PS C:\Users\Administrator> Import-Module ActiveDirectory

Import-Module のコマンドでActive Directory のApplet をロードします。

Active Directory のPowerShellのモジュール からほとんどのことができます。ここで複数の例しか書きませんが、「これ知りたい!」なものありましたらコメントでお聞きください。

 

次、日本向けのActive DirectoryのPowerShell のコマンドをちょっと紹介したいと思っています。

最初はNew-ADUserです。新規にユーザーを作成するコマンドです。コマンドの説明を表示するには以下の方法でできます。

>get-help New-ADUser

又は

>get-help New-ADUser -full

などなどです。

たとえば、新しいユーザーの「佐井等 四朗」を「Sales」の組織単位(OU)に入れたいです。「サイトウ」という名前は非常に多くありますので、検索やソートするために、名前のふりがなもつけてみましょう。

>New-ADUser -SamAccountName "shiros" -Name "佐井等 四朗" -GivenName "佐井等" -Surname "四朗" -DisplayName "佐井等 四朗" -Path ‘OU=Sales,DC=Contoso,DC=COM’ -OtherAttributes @{‘msDS-PhoneticDisplayName’="サイトウ シロウ";'msDS-PhoneticFirstName’="シロウ";'msDS-PhoneticLastName'="サイトウ"}

注目するのは「 -OtherAttributes」 のところです。多く使っている項目だとパラメーターがほぼあります。例:「名」は「-GivenName」などです。ヘルプの「-full」をご覧になさったら、全部が見えます。それ以外の項目は「-OtherAttributes」で示すことが可能です。上で書いてあるふりがなの例があった用にスキーマの属性(Attribute)名を示せばほとんど何の情報でも追加することが可能となります。たとえば、社員番号の場合だと:

-OtherAttributes @{‘otherMobile’=”090-XXXX-XXXX”}

で出来ます。

 

じゃ、新しいユーザーを入れましたので、「サイトウ」という名前のいっぱいある「Sales」 OU の人々を検索してみましょう。

>get-help Get-ADUser –full

をご覧ください。

>Get-ADUser –Filter ‘msDS-PhoneticLastName –like “サイトウ”’ –Properties msDS-PhoneticDisplayName,DisplayName –SearchBase “OU=Sales,DC=Contoso,DC=COM” | sort-object –property msDS-PhoneticDisplayName | format-table msDS-PhoneticDisplayName,DisplayName –A

を入力すると出力は: (私のテスト環境の場合)

msDS-PhoneticDisplayName DisplayName
------------------------ -----------
サイトウ サブロウ 差異等 三郎
サイトウ シロウ 佐井等 四朗
サイトウ ジロウ 債等 二郎
サイトウ ジロウ 際等 次郎
サイトウ タロウ 斉藤 太郎
サイトウ タロウ 齋藤 太郎

 

Get-ADUser を使って検索したい場合、「-Filter」を使ったらなんでも検索できます。上の例の場合、msDS-PhoneticDisplayName の属性の検索となります。「-SearchBase」を使って、「Sales」のOUのみの検索となります。
Get-ADUserの出力をソートするために sort-object のコマンドを使って、msDS-PhoneticDisplayName 順で表示します。
見やすくするためにformat-table (又はアリアスのFT でも可能)のコマンドを使います。

 

上の例だと、PhoneticDisplayNameとDisplayNameが半額スペースが入っています。それを修正したい場合、Set-ADUser を使って出来ます。でも最初にGet-ADUser を使って変えたいUser のリストを検索します。

>Get-ADUser –Filter ‘Name –like “*”’ –SearchBase ‘OU=Sales,DC=Contoso,DC=COM’ –Properties msDS-PhoneticDisplayName,msDS-PhoneticFirstName,msDS-PhoneticLastName

を使ったら、Sales のOU のオブジェクトを表示されます。msDS-Phonetic* の情報もつきます。そのリストをSet-ADUser へパイプします。

>Get-ADUser –Filter ‘Name –like “*”’ –SearchBase ‘OU=Sales,DC=Contoso,DC=COM’ –Properties msDS-PhoneticDisplayName,msDS-PhoneticFirstName,msDS-PhoneticLastName | % {Set-ADUser $_ –Replace @{‘msDS-PhoneticDisplayName’=($_.’msDS-PhoneticLastName’ + $_.’msDS-PhoneticFirstName’)}}

(この例にはmsDS-PhoneticFirstNameとmsDS-PhoneticLastNameが既にデータが入っている状態じゃないと失敗します)

最後にちゃんと変えたかどうかを確認しましょう。

>Get-ADUser –Filter ‘Name –like “*”’ –Properties msDS-PhoneticDisplayName,DisplayName –SearchBase “OU=Sales,DC=Contoso,DC=COM” | sort-object –property msDS-PhoneticDisplayName | format-table msDS-PhoneticDisplayName,DisplayName –A

 

msDS-PhoneticDisplayName DisplayName
------------------------ -----------
アンドウミキ 安藤 美木
サイトウサブロウ 差異等 三郎
サイトウシロウ 佐井等 四朗
サイトウジロウ 債等 二郎
サイトウジロウ 際等 次郎
サイトウタロウ 斉藤 太郎
サイトウタロウ 齋藤 太郎
モリオウガイアーロン 森鷗外 あーろん
ヤスダエイジ 安田 永智

 

msDS-PhoneticDisplayName から半額スペースがなくなりました。復活したい場合、上のコマンドの一部変えれば復活することが出来ます。

–Replace @{‘msDS-PhoneticDisplayName’=($_.’msDS-PhoneticLastName’ + “ “ + $_.’msDS-PhoneticFirstName’)}}

 

ここまで頑張って読んでいただいて、お疲れ様です。

次回はActive Directory の新管理ツールの”Active Directory 管理センター”を紹介したいと思っております。